// check that dropck does the right thing with misc. Ty variants use std::fmt; struct NoisyDrop(T); impl Drop for NoisyDrop { fn drop(&mut self) { let _ = vec!["0wned"]; println!("dropping {:?}", self.0) } } trait Associator { type As; } impl Associator for T { type As = NoisyDrop; } struct Wrap(::As); fn projection() { let (_w, bomb); bomb = vec![""]; _w = Wrap::<&[&str]>(NoisyDrop(&bomb)); } //~^^ ERROR `bomb` does not live long enough fn closure() { let (_w,v); v = vec![""]; _w = { let u = NoisyDrop(&v); //~^ ERROR `v` does not live long enough move || u.0.len() }; } fn main() { closure(); projection() }