137 lines
5.3 KiB
Plaintext
137 lines
5.3 KiB
Plaintext
error[E0597]: `x` does not live long enough
|
|
--> $DIR/without-precise-captures-we-are-powerless.rs:16:13
|
|
|
|
|
LL | fn simple<'a>(x: &'a i32) {
|
|
| -- lifetime `'a` defined here
|
|
LL | let c = async || { println!("{}", *x); };
|
|
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ borrowed value does not live long enough
|
|
LL | outlives::<'a>(c());
|
|
LL | outlives::<'a>(call_once(c));
|
|
| ------------ argument requires that `x` is borrowed for `'a`
|
|
...
|
|
LL | }
|
|
| - `x` dropped here while still borrowed
|
|
|
|
error[E0597]: `c` does not live long enough
|
|
--> $DIR/without-precise-captures-we-are-powerless.rs:21:20
|
|
|
|
|
LL | fn simple<'a>(x: &'a i32) {
|
|
| -- lifetime `'a` defined here
|
|
...
|
|
LL | let c = async move || { println!("{}", *x); };
|
|
| - binding `c` declared here
|
|
LL | outlives::<'a>(c());
|
|
| ^--
|
|
| |
|
|
| borrowed value does not live long enough
|
|
| argument requires that `c` is borrowed for `'a`
|
|
LL | outlives::<'a>(call_once(c));
|
|
LL | }
|
|
| - `c` dropped here while still borrowed
|
|
|
|
error[E0597]: `x` does not live long enough
|
|
--> $DIR/without-precise-captures-we-are-powerless.rs:28:13
|
|
|
|
|
LL | fn through_field<'a>(x: S<'a>) {
|
|
| -- lifetime `'a` defined here
|
|
LL | let c = async || { println!("{}", *x.0); };
|
|
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ borrowed value does not live long enough
|
|
LL | outlives::<'a>(c());
|
|
LL | outlives::<'a>(call_once(c));
|
|
| ------------ argument requires that `x` is borrowed for `'a`
|
|
...
|
|
LL | }
|
|
| - `x` dropped here while still borrowed
|
|
|
|
error[E0505]: cannot move out of `x` because it is borrowed
|
|
--> $DIR/without-precise-captures-we-are-powerless.rs:32:13
|
|
|
|
|
LL | fn through_field<'a>(x: S<'a>) {
|
|
| -- lifetime `'a` defined here
|
|
LL | let c = async || { println!("{}", *x.0); };
|
|
| ---------------------------------- borrow of `x` occurs here
|
|
LL | outlives::<'a>(c());
|
|
LL | outlives::<'a>(call_once(c));
|
|
| ------------ argument requires that `x` is borrowed for `'a`
|
|
LL |
|
|
LL | let c = async move || { println!("{}", *x.0); };
|
|
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ move out of `x` occurs here
|
|
|
|
error[E0597]: `c` does not live long enough
|
|
--> $DIR/without-precise-captures-we-are-powerless.rs:33:20
|
|
|
|
|
LL | fn through_field<'a>(x: S<'a>) {
|
|
| -- lifetime `'a` defined here
|
|
...
|
|
LL | let c = async move || { println!("{}", *x.0); };
|
|
| - binding `c` declared here
|
|
LL | outlives::<'a>(c());
|
|
| ^--
|
|
| |
|
|
| borrowed value does not live long enough
|
|
| argument requires that `c` is borrowed for `'a`
|
|
LL | outlives::<'a>(call_once(c));
|
|
LL | }
|
|
| - `c` dropped here while still borrowed
|
|
|
|
error[E0505]: cannot move out of `c` because it is borrowed
|
|
--> $DIR/without-precise-captures-we-are-powerless.rs:34:30
|
|
|
|
|
LL | fn through_field<'a>(x: S<'a>) {
|
|
| -- lifetime `'a` defined here
|
|
...
|
|
LL | let c = async move || { println!("{}", *x.0); };
|
|
| - binding `c` declared here
|
|
LL | outlives::<'a>(c());
|
|
| ---
|
|
| |
|
|
| borrow of `c` occurs here
|
|
| argument requires that `c` is borrowed for `'a`
|
|
LL | outlives::<'a>(call_once(c));
|
|
| ^ move out of `c` occurs here
|
|
|
|
error[E0597]: `x` does not live long enough
|
|
--> $DIR/without-precise-captures-we-are-powerless.rs:38:13
|
|
|
|
|
LL | fn through_field_and_ref<'a>(x: &S<'a>) {
|
|
| -- lifetime `'a` defined here
|
|
LL | let c = async || { println!("{}", *x.0); };
|
|
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ borrowed value does not live long enough
|
|
LL | outlives::<'a>(c());
|
|
LL | outlives::<'a>(call_once(c));
|
|
| ------------ argument requires that `x` is borrowed for `'a`
|
|
...
|
|
LL | }
|
|
| - `x` dropped here while still borrowed
|
|
|
|
error[E0621]: explicit lifetime required in the type of `x`
|
|
--> $DIR/without-precise-captures-we-are-powerless.rs:40:20
|
|
|
|
|
LL | fn through_field_and_ref<'a>(x: &S<'a>) {
|
|
| ------ help: add explicit lifetime `'a` to the type of `x`: `&'a S<'a>`
|
|
...
|
|
LL | outlives::<'a>(call_once(c));
|
|
| ^^^^^^^^^^^^ lifetime `'a` required
|
|
|
|
error[E0597]: `c` does not live long enough
|
|
--> $DIR/without-precise-captures-we-are-powerless.rs:43:20
|
|
|
|
|
LL | fn through_field_and_ref<'a>(x: &S<'a>) {
|
|
| -- lifetime `'a` defined here
|
|
...
|
|
LL | let c = async move || { println!("{}", *x.0); };
|
|
| - binding `c` declared here
|
|
LL | outlives::<'a>(c());
|
|
| ^--
|
|
| |
|
|
| borrowed value does not live long enough
|
|
| argument requires that `c` is borrowed for `'a`
|
|
LL | // outlives::<'a>(call_once(c)); // FIXME(async_closures): Figure out why this fails
|
|
LL | }
|
|
| - `c` dropped here while still borrowed
|
|
|
|
error: aborting due to 9 previous errors
|
|
|
|
Some errors have detailed explanations: E0505, E0597, E0621.
|
|
For more information about an error, try `rustc --explain E0505`.
|