| // 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() { } |