//~ type annotations needed: cannot satisfy `Self: Gen<'source>` pub trait Gen<'source> { type Output; fn gen(&self) -> T where Self: for<'s> Gen<'s, Output = T>; } fn main() {}