2015-01-11 3 views
2

이전 녹 코드를 1.0.0에서 작동하도록 변환 중입니다. 이 같은 기록하는 데 사용되는 문자의 반복자를받는 함수, 변환해야합니다반복자의 요소 유형을 제한하는 방법은 무엇입니까?

fn f<I: Iterator<char>>(char_iter: I) 

는 이제 Iterator이 매개 변수를 사용하지 않습니다, I에 대한 제약은 I: Iterator 수 있습니다. 요소 유형은 I::Item입니다. I::Item = char이라는 제약을 표현할 수있는 방법이 있습니까? (아니면 완전히 다른 방법으로해야합니까?)

답변

1

I: Iterator<Item = char>을 쓸 수 있습니다. 앞으로 어떤 시점에서 과 같은 where 절도 작동 할 수 있지만 지금은 작동하지 않을 수 있습니다.

1

이 좋아, 좀 RFC 토론을 읽는이를 알아낼 수 있었고, 대답은 당신이 (ML에 서명 올 뭉치 같은) 특성에 관련된 유형을 인스턴스화 할 수 있다는 것입니다 : 곧

fn f<I: Iterator<Item = char>>(char_iter: I) 

가한다 where 조항에 평등 제약 조건을 사용하는 것이 가능하지만, 이것은 1.0.0 알파에서 작동하지 않습니다

fn f<I: Iterator>(char_iter: I) where I::Item == char 
2
fn f<I: Iterator<Item = char>>(char_iter: I) 

관련 유형이 최근에 있었다 언어에 추가되었으며 많은 라이브러리 유형이 업데이트되어이를 활용했습니다. 예를 들어, IteratorItem이라는 연결된 유형을 정의합니다. 관련 유형의 이름, 등호 및 필요한 유형을 작성하여 연관된 유형에 대한 제한 조건을 추가 할 수 있습니다.

관련 문제