Closed
Description
fn next<T: Iterator<Item = U>, U>(t: &mut T) -> Option<U> {
t.next()
}
fn foo<T: Iterator>(t: &mut T) {
let _: Option<T::Item> = next(t);
}
fn main() {}
The below is a normalizes-to pred. In the body of foo
, <T as Iterator>::Item normalizes-to <T as Iterator>::Item
is false.
error[E0271]: type mismatch resolving `<T as Iterator>::Item == <T as Iterator>::Item`
--> <source>:6:35
|
6 | let _: Option<T::Item> = next(t);
| ---- ^ types differ
| |
| required by a bound introduced by this call
|
note: required by a bound in `next`
--> <source>:1:21
|
1 | fn next<T: Iterator<Item = U>, U>(t: &mut T) -> Option<U> {
| ^^^^^^^^ required by this bound in `next`
error: aborting due to previous error