error[E0597]: `x` does not live long enough --> $DIR/issue-29106.rs:16:26 | LL | let (y, x); | - binding `x` declared here LL | x = "alive".to_string(); LL | y = Arc::new(Foo(&x)); | ^^ borrowed value does not live long enough LL | } | - | | | `x` dropped here while still borrowed | borrow might be used here, when `y` is dropped and runs the `Drop` code for type `Arc` | = note: values in a scope are dropped in the opposite order they are defined error[E0597]: `x` does not live long enough --> $DIR/issue-29106.rs:23:25 | LL | let (y, x); | - binding `x` declared here LL | x = "alive".to_string(); LL | y = Rc::new(Foo(&x)); | ^^ borrowed value does not live long enough LL | } | - | | | `x` dropped here while still borrowed | borrow might be used here, when `y` is dropped and runs the `Drop` code for type `Rc` | = note: values in a scope are dropped in the opposite order they are defined error: aborting due to 2 previous errors For more information about this error, try `rustc --explain E0597`.