error[E0308]: mismatched types --> $DIR/issue-99387.rs:23: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 a `#[define_opaque(Successors)]` attribute to be able to define hidden types --> $DIR/issue-99387.rs:22: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`.