warning[E0713]: borrow may still be in use when destructor runs --> $DIR/issue-45696-scribble-on-boxed-borrow.rs:53:5 | LL | fn scribbled<'a>(s: Scribble<'a>) -> &'a mut u32 { | -- lifetime `'a` defined here LL | &mut *s.0 //[nll]~ ERROR borrow may still be in use when destructor runs [E0713] | ^^^^^^^^^ returning this value requires that `*s.0` is borrowed for `'a` ... LL | } | - here, drop of `s` needs exclusive access to `*s.0`, because the type `Scribble<'_>` implements the `Drop` trait | = warning: this error has been downgraded to a warning for backwards compatibility with previous releases = warning: this represents potential undefined behavior in your code and this warning will become a hard error in the future warning[E0713]: borrow may still be in use when destructor runs --> $DIR/issue-45696-scribble-on-boxed-borrow.rs:64:5 | LL | fn boxed_scribbled<'a>(s: Box>) -> &'a mut u32 { | -- lifetime `'a` defined here LL | &mut *(*s).0 //[nll]~ ERROR borrow may still be in use when destructor runs [E0713] | ^^^^^^^^^^^^ returning this value requires that `*s.0` is borrowed for `'a` ... LL | } | - here, drop of `s` needs exclusive access to `*s.0`, because the type `Scribble<'_>` implements the `Drop` trait | = warning: this error has been downgraded to a warning for backwards compatibility with previous releases = warning: this represents potential undefined behavior in your code and this warning will become a hard error in the future warning[E0713]: borrow may still be in use when destructor runs --> $DIR/issue-45696-scribble-on-boxed-borrow.rs:75:5 | LL | fn boxed_boxed_scribbled<'a>(s: Box>>) -> &'a mut u32 { | -- lifetime `'a` defined here LL | &mut *(**s).0 //[nll]~ ERROR borrow may still be in use when destructor runs [E0713] | ^^^^^^^^^^^^^ returning this value requires that `*s.0` is borrowed for `'a` ... LL | } | - here, drop of `s` needs exclusive access to `*s.0`, because the type `Scribble<'_>` implements the `Drop` trait | = warning: this error has been downgraded to a warning for backwards compatibility with previous releases = warning: this represents potential undefined behavior in your code and this warning will become a hard error in the future error: compilation successful --> $DIR/issue-45696-scribble-on-boxed-borrow.rs:82:1 | LL | / fn main() { //[ast]~ ERROR compilation successful LL | | //[migrate]~^ ERROR compilation successful LL | | let mut x = 1; LL | | { ... | LL | | *boxed_boxed_scribbled(Box::new(Box::new(Scribble(&mut x)))) += 10; LL | | } | |_^ error: aborting due to previous error For more information about this error, try `rustc --explain E0713`.