error[E0308]: mismatched types --> $DIR/issue-99387.rs:22:5 | LL | pub type Successors<'a> = impl Iterator; | ---------------------------- the expected opaque type ... LL | pub fn ohno<'a>() -> <&'a () as Tr>::Item { | -------------------- expected `Successors<'a>` because of return type LL | None.into_iter() | ^^^^^^^^^^^^^^^^ expected opaque type, found `IntoIter<_>` | = note: expected opaque type `Successors<'a>` found struct `std::option::IntoIter<_>` note: this item must have the opaque type in its signature in order to be able to register hidden types --> $DIR/issue-99387.rs:21:8 | LL | pub fn ohno<'a>() -> <&'a () as Tr>::Item { | ^^^^ error: aborting due to 1 previous error For more information about this error, try `rustc --explain E0308`.