// Test that a structure which tries to store a pointer to `y` into | |
// `p` (indirectly) fails to compile. | |
struct SomeStruct<'a, 'b: 'a> { | |
p: &'a mut &'b i32, | |
y: &'b i32, | |
} | |
fn test() { | |
let x = 44; | |
let mut p = &x; | |
{ | |
let y = 22; | |
let closure = SomeStruct { | |
p: &mut p, | |
y: &y, | |
//~^ ERROR `y` does not live long enough [E0597] | |
}; | |
closure.invoke(); | |
} | |
deref(p); | |
} | |
impl<'a, 'b> SomeStruct<'a, 'b> { | |
fn invoke(self) { | |
*self.p = self.y; | |
} | |
} | |
fn deref(_: &i32) { } | |
fn main() { } |