error[E0308]: mismatched types --> $DIR/regions-infer-paramd-indirect.rs:22:18 | LL | self.f = b; | ^ lifetime mismatch | = note: expected type `std::boxed::Box>` found type `std::boxed::Box>` note: the anonymous lifetime #2 defined on the method body at 21:5... --> $DIR/regions-infer-paramd-indirect.rs:21:5 | LL | / fn set_f_bad(&mut self, b: Box) { LL | | self.f = b; LL | | //~^ ERROR mismatched types LL | | //~| expected type `std::boxed::Box>` LL | | //~| found type `std::boxed::Box>` LL | | //~| lifetime mismatch LL | | } | |_____^ note: ...does not necessarily outlive the lifetime 'a as defined on the impl at 16:6 --> $DIR/regions-infer-paramd-indirect.rs:16:6 | LL | impl<'a> SetF<'a> for C<'a> { | ^^ error: aborting due to previous error For more information about this error, try `rustc --explain E0308`.