error[E0308]: mismatched types --> $DIR/issue-20831-debruijn.rs:28:5 | LL | / fn subscribe(&mut self, t : Box::Output> + 'a>) { LL | | // Not obvious, but there is an implicit lifetime here -------^ LL | | //~^^ ERROR cannot infer LL | | //~| ERROR mismatched types ... | LL | | self.sub = t; LL | | } | |_____^ lifetime mismatch | = note: expected type `'a` found type `` note: the anonymous lifetime #2 defined on the method body at 28:5... --> $DIR/issue-20831-debruijn.rs:28:5 | LL | / fn subscribe(&mut self, t : Box::Output> + 'a>) { LL | | // Not obvious, but there is an implicit lifetime here -------^ LL | | //~^^ ERROR cannot infer LL | | //~| ERROR mismatched types ... | LL | | self.sub = t; LL | | } | |_____^ note: ...does not necessarily outlive the lifetime 'a as defined on the impl at 26:6 --> $DIR/issue-20831-debruijn.rs:26:6 | LL | impl<'a> Publisher<'a> for MyStruct<'a> { | ^^ error[E0308]: mismatched types --> $DIR/issue-20831-debruijn.rs:28:5 | LL | / fn subscribe(&mut self, t : Box::Output> + 'a>) { LL | | // Not obvious, but there is an implicit lifetime here -------^ LL | | //~^^ ERROR cannot infer LL | | //~| ERROR mismatched types ... | LL | | self.sub = t; LL | | } | |_____^ lifetime mismatch | = note: expected type `'a` found type `` note: the lifetime 'a as defined on the impl at 26:6... --> $DIR/issue-20831-debruijn.rs:26:6 | LL | impl<'a> Publisher<'a> for MyStruct<'a> { | ^^ note: ...does not necessarily outlive the anonymous lifetime #2 defined on the method body at 28:5 --> $DIR/issue-20831-debruijn.rs:28:5 | LL | / fn subscribe(&mut self, t : Box::Output> + 'a>) { LL | | // Not obvious, but there is an implicit lifetime here -------^ LL | | //~^^ ERROR cannot infer LL | | //~| ERROR mismatched types ... | LL | | self.sub = t; LL | | } | |_____^ error[E0495]: cannot infer an appropriate lifetime for lifetime parameter `'a` due to conflicting requirements --> $DIR/issue-20831-debruijn.rs:28:5 | LL | / fn subscribe(&mut self, t : Box::Output> + 'a>) { LL | | // Not obvious, but there is an implicit lifetime here -------^ LL | | //~^^ ERROR cannot infer LL | | //~| ERROR mismatched types ... | LL | | self.sub = t; LL | | } | |_____^ | note: first, the lifetime cannot outlive the anonymous lifetime #2 defined on the method body at 28:5... --> $DIR/issue-20831-debruijn.rs:28:5 | LL | / fn subscribe(&mut self, t : Box::Output> + 'a>) { LL | | // Not obvious, but there is an implicit lifetime here -------^ LL | | //~^^ ERROR cannot infer LL | | //~| ERROR mismatched types ... | LL | | self.sub = t; LL | | } | |_____^ note: ...but the lifetime must also be valid for the lifetime 'a as defined on the impl at 26:6... --> $DIR/issue-20831-debruijn.rs:26:6 | LL | impl<'a> Publisher<'a> for MyStruct<'a> { | ^^ = note: ...so that the types are compatible: expected Publisher<'_> found Publisher<'_> error: aborting due to 3 previous errors Some errors occurred: E0308, E0495. For more information about an error, try `rustc --explain E0308`.