fn main() { | |
{ | |
let mut _thing1 = D(Box::new("thing1")); | |
{ | |
let _thing2 = D("thing2"); | |
side_effects(); | |
D("other").next(&_thing1) | |
//~^ ERROR does not live long enough | |
} | |
} | |
; | |
} | |
#[derive(Debug)] | |
struct D<T: std::fmt::Debug>(T); | |
impl<T: std::fmt::Debug> Drop for D<T> { | |
fn drop(&mut self) { | |
println!("dropping {:?})", self); | |
} | |
} | |
impl<T: std::fmt::Debug> D<T> { | |
fn next<U: std::fmt::Debug>(&self, _other: U) -> D<U> { D(_other) } | |
fn end(&self) { } | |
} | |
fn side_effects() { } |