// Adapted from rustc ui test suite (ui/type-alias-impl-trait/issue-72793.rs) #![feature(type_alias_impl_trait)] pub trait T { type Item; } pub type Alias<'a> = impl T; struct S; impl<'a> T for &'a S { type Item = &'a (); } #[define_opaque(Alias)] pub fn filter_positive<'a>() -> Alias<'a> { &S } fn with_positive(fun: impl Fn(Alias<'_>)) { fun(filter_positive()); } fn main() { with_positive(|_| ()); }