| 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`. |