rust/tests/ui/borrowck/issue-95079-missing-move-in-nested-closure.stderr
2023-01-11 09:32:08 +00:00

38 lines
1.8 KiB
Plaintext

error: captured variable cannot escape `FnMut` closure body
--> $DIR/issue-95079-missing-move-in-nested-closure.rs:3:29
|
LL | fn foo1(s: &str) -> impl Iterator<Item = String> + '_ {
| - variable defined here
LL | None.into_iter()
LL | .flat_map(move |()| s.chars().map(|c| format!("{}{}", c, s)))
| - -^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
| | |
| | returns a reference to a captured variable which escapes the closure body
| | variable captured here
| inferred to be a `FnMut` closure
|
= note: `FnMut` closures only have access to their captured variables while they are executing...
= note: ...therefore, they cannot allow references to captured variables to escape
help: consider adding 'move' keyword before the nested closure
|
LL | .flat_map(move |()| s.chars().map(move |c| format!("{}{}", c, s)))
| ++++
error: lifetime may not live long enough
--> $DIR/issue-95079-missing-move-in-nested-closure.rs:9:15
|
LL | move |()| s.chars().map(|c| format!("{}{}", c, s))
| --------- ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ returning this value requires that `'1` must outlive `'2`
| | |
| | return type of closure `Map<Chars<'_>, [closure@$DIR/issue-95079-missing-move-in-nested-closure.rs:9:29: 9:32]>` contains a lifetime `'2`
| lifetime `'1` represents this closure's body
|
= note: closure implements `Fn`, so references to captured variables can't escape the closure
help: consider adding 'move' keyword before the nested closure
|
LL | move |()| s.chars().map(move |c| format!("{}{}", c, s))
| ++++
error: aborting due to 2 previous errors