32 lines
711 B
Rust
32 lines
711 B
Rust
// edition:2021
|
|
|
|
// regression test for #112056
|
|
|
|
struct Spooky<'b> {
|
|
owned: Option<&'static u32>,
|
|
borrowed: &'b &'static u32,
|
|
}
|
|
|
|
impl<'b> Spooky<'b> {
|
|
fn create_self_reference<'a>(&'a mut self) {
|
|
let mut closure = || {
|
|
if let Some(owned) = &self.owned {
|
|
let borrow: &'a &'static u32 = owned;
|
|
self.borrowed = borrow;
|
|
//~^ ERROR: lifetime may not live long enough
|
|
}
|
|
};
|
|
closure();
|
|
}
|
|
}
|
|
|
|
fn main() {
|
|
let mut spooky: Spooky<'static> = Spooky {
|
|
owned: Some(&1),
|
|
borrowed: &&1,
|
|
};
|
|
spooky.create_self_reference();
|
|
spooky.owned = None;
|
|
println!("{}", **spooky.borrowed);
|
|
}
|