e5c330ac48
This is a aspect of Rust that frequently trips up people who are not aware of it yet. This diagnostic attempts to explain what's happening and why the lifetime constraint, that was never mentioned in the source, arose.
86 lines
3.7 KiB
Plaintext
86 lines
3.7 KiB
Plaintext
error[E0597]: `o2` does not live long enough
|
|
--> $DIR/dropck_trait_cycle_checked.rs:111:13
|
|
|
|
|
LL | let (o1, o2, o3): (Box<dyn Obj>, Box<dyn Obj>, Box<dyn Obj>) = (O::new(), O::new(), O::new());
|
|
| -- binding `o2` declared here -------- cast requires that `o2` is borrowed for `'static`
|
|
LL | o1.set0(&o2);
|
|
| ^^^ borrowed value does not live long enough
|
|
...
|
|
LL | }
|
|
| - `o2` dropped here while still borrowed
|
|
|
|
|
= note: due to object lifetime defaults, `Box<dyn Obj<'_>>` actually means `Box<(dyn Obj<'_> + 'static)>`
|
|
|
|
error[E0597]: `o3` does not live long enough
|
|
--> $DIR/dropck_trait_cycle_checked.rs:112:13
|
|
|
|
|
LL | let (o1, o2, o3): (Box<dyn Obj>, Box<dyn Obj>, Box<dyn Obj>) = (O::new(), O::new(), O::new());
|
|
| -- binding `o3` declared here -------- cast requires that `o3` is borrowed for `'static`
|
|
LL | o1.set0(&o2);
|
|
LL | o1.set1(&o3);
|
|
| ^^^ borrowed value does not live long enough
|
|
...
|
|
LL | }
|
|
| - `o3` dropped here while still borrowed
|
|
|
|
|
= note: due to object lifetime defaults, `Box<dyn Obj<'_>>` actually means `Box<(dyn Obj<'_> + 'static)>`
|
|
|
|
error[E0597]: `o2` does not live long enough
|
|
--> $DIR/dropck_trait_cycle_checked.rs:113:13
|
|
|
|
|
LL | let (o1, o2, o3): (Box<dyn Obj>, Box<dyn Obj>, Box<dyn Obj>) = (O::new(), O::new(), O::new());
|
|
| -- binding `o2` declared here -------- cast requires that `o2` is borrowed for `'static`
|
|
...
|
|
LL | o2.set0(&o2);
|
|
| ^^^ borrowed value does not live long enough
|
|
...
|
|
LL | }
|
|
| - `o2` dropped here while still borrowed
|
|
|
|
|
= note: due to object lifetime defaults, `Box<dyn Obj<'_>>` actually means `Box<(dyn Obj<'_> + 'static)>`
|
|
|
|
error[E0597]: `o3` does not live long enough
|
|
--> $DIR/dropck_trait_cycle_checked.rs:114:13
|
|
|
|
|
LL | let (o1, o2, o3): (Box<dyn Obj>, Box<dyn Obj>, Box<dyn Obj>) = (O::new(), O::new(), O::new());
|
|
| -- binding `o3` declared here -------- cast requires that `o3` is borrowed for `'static`
|
|
...
|
|
LL | o2.set1(&o3);
|
|
| ^^^ borrowed value does not live long enough
|
|
...
|
|
LL | }
|
|
| - `o3` dropped here while still borrowed
|
|
|
|
|
= note: due to object lifetime defaults, `Box<dyn Obj<'_>>` actually means `Box<(dyn Obj<'_> + 'static)>`
|
|
|
|
error[E0597]: `o1` does not live long enough
|
|
--> $DIR/dropck_trait_cycle_checked.rs:115:13
|
|
|
|
|
LL | let (o1, o2, o3): (Box<dyn Obj>, Box<dyn Obj>, Box<dyn Obj>) = (O::new(), O::new(), O::new());
|
|
| -- binding `o1` declared here -------- cast requires that `o1` is borrowed for `'static`
|
|
...
|
|
LL | o3.set0(&o1);
|
|
| ^^^ borrowed value does not live long enough
|
|
LL | o3.set1(&o2);
|
|
LL | }
|
|
| - `o1` dropped here while still borrowed
|
|
|
|
|
= note: due to object lifetime defaults, `Box<dyn Obj<'_>>` actually means `Box<(dyn Obj<'_> + 'static)>`
|
|
|
|
error[E0597]: `o2` does not live long enough
|
|
--> $DIR/dropck_trait_cycle_checked.rs:116:13
|
|
|
|
|
LL | let (o1, o2, o3): (Box<dyn Obj>, Box<dyn Obj>, Box<dyn Obj>) = (O::new(), O::new(), O::new());
|
|
| -- binding `o2` declared here -------- cast requires that `o2` is borrowed for `'static`
|
|
...
|
|
LL | o3.set1(&o2);
|
|
| ^^^ borrowed value does not live long enough
|
|
LL | }
|
|
| - `o2` dropped here while still borrowed
|
|
|
|
|
= note: due to object lifetime defaults, `Box<dyn Obj<'_>>` actually means `Box<(dyn Obj<'_> + 'static)>`
|
|
|
|
error: aborting due to 6 previous errors
|
|
|
|
For more information about this error, try `rustc --explain E0597`.
|