struct PrintOnDrop<'a>(&'a str); impl Drop for PrintOnDrop<'_> { fn drop(&mut self) { println!("printint: {}", self.0); } } use std::collections::BTreeMap; use std::iter::FromIterator; fn main() { let s = String::from("Hello World!"); let _map = BTreeMap::from_iter([((), PrintOnDrop(&s))]); drop(s); //~ ERROR cannot move out of `s` because it is borrowed }