error[E0505]: cannot move out of `s` because it is borrowed --> $DIR/btreemap_dropck.rs:15:10 | LL | let s = String::from("Hello World!"); | - binding `s` declared here LL | let _map = BTreeMap::from_iter([((), PrintOnDrop(&s))]); | -- borrow of `s` occurs here LL | drop(s); | ^ move out of `s` occurs here LL | } | - borrow might be used here, when `_map` is dropped and runs the `Drop` code for type `BTreeMap` | help: consider cloning the value if the performance cost is acceptable | LL | let _map = BTreeMap::from_iter([((), PrintOnDrop(&s.clone()))]); | ++++++++ error: aborting due to 1 previous error For more information about this error, try `rustc --explain E0505`.