error[E0495]: cannot infer an appropriate lifetime for lifetime parameter `'a` due to conflicting requirements --> $DIR/issue-20831-debruijn.rs:28:33 | LL | fn subscribe(&mut self, t : Box::Output> + 'a>) { | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | note: first, the lifetime cannot outlive the anonymous lifetime as defined here... --> $DIR/issue-20831-debruijn.rs:28:18 | LL | fn subscribe(&mut self, t : Box::Output> + 'a>) { | ^ note: ...but the lifetime must also be valid for the lifetime `'a` as defined here... --> $DIR/issue-20831-debruijn.rs:26:6 | LL | impl<'a> Publisher<'a> for MyStruct<'a> { | ^^ note: ...so that the types are compatible --> $DIR/issue-20831-debruijn.rs:28:33 | LL | fn subscribe(&mut self, t : Box::Output> + 'a>) { | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ = note: expected ` as Publisher<'_>>` found ` as Publisher<'_>>` error: lifetime may not live long enough --> $DIR/issue-20831-debruijn.rs:28:5 | LL | impl<'a> Publisher<'a> for MyStruct<'a> { | -- lifetime `'a` defined here LL | type Output = u64; LL | fn subscribe(&mut self, t : Box::Output> + 'a>) { | ^^^^^^^^^^^^^^^^^^^^^^^^-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | | | | | has type `Box as Publisher<'1>>::Output>>` | requires that `'a` must outlive `'1` error: lifetime may not live long enough --> $DIR/issue-20831-debruijn.rs:28:5 | LL | impl<'a> Publisher<'a> for MyStruct<'a> { | -- lifetime `'a` defined here LL | type Output = u64; LL | fn subscribe(&mut self, t : Box::Output> + 'a>) { | ^^^^^^^^^^^^^^^^^^^^^^^^-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | | | | | has type `Box as Publisher<'1>>::Output>>` | requires that `'1` must outlive `'a` error: aborting due to 3 previous errors For more information about this error, try `rustc --explain E0495`.