| pub trait Mirror<Smoke> { | |
| type Image; | |
| } | |
| impl<T, Smoke> Mirror<Smoke> for T { | |
| type Image = T; | |
| } | |
| pub fn poison<S>(victim: String) where <String as Mirror<S>>::Image: Copy { | |
| loop { drop(victim); } | |
| } | |
| fn main() { | |
| let s = "Hello!".to_owned(); | |
| let mut s_copy = s; | |
| s_copy.push_str("World!"); | |
| "0wned!".to_owned(); | |
| println!("{}", s); //~ ERROR borrow of moved value | |
| } |