error[E0597]: `d1` does not live long enough --> $DIR/issue-24895-copy-clone-dropck.rs:27:14 | LL | let (d2, d1); | -- binding `d1` declared here LL | d1 = D(34, "d1"); LL | d2 = D(S(&d1, "inner"), "d2"); | ^^^ borrowed value does not live long enough LL | } | - | | | `d1` dropped here while still borrowed | borrow might be used here, when `d2` is dropped and runs the `Drop` code for type `D` | = note: values in a scope are dropped in the opposite order they are defined error: aborting due to 1 previous error For more information about this error, try `rustc --explain E0597`.