trait Trait<'a> {} impl Trait<'_> for T {} fn whatever() -> impl for<'a> Trait<'a> + for<'b> Trait<'b> {} fn whatever2() -> impl for<'c> Fn(&'c ()) { |_: &()| {} } fn main() { let x: u32 = whatever(); //~^ ERROR mismatched types let x2: u32 = whatever2(); //~^ ERROR mismatched types }