Skip to content

Commit

Permalink
Rollup merge of rust-lang#69480 - GuillaumeGomez:clean-up-e0373, r=Dy…
Browse files Browse the repository at this point in the history
…lan-DPC

Clean up E0373 explanation

r? @Dylan-DPC
  • Loading branch information
Dylan-DPC authored Feb 26, 2020
2 parents b48432f + 129ac01 commit 7f11fd0
Showing 1 changed file with 7 additions and 3 deletions.
10 changes: 7 additions & 3 deletions src/librustc_error_codes/error_codes/E0373.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
This error occurs when an attempt is made to use data captured by a closure,
when that data may no longer exist. It's most commonly seen when attempting to
return a closure:
A captured variable in a closure may not live long enough.

Erroneous code example:

```compile_fail,E0373
fn foo() -> Box<Fn(u32) -> u32> {
Expand All @@ -9,6 +9,10 @@ fn foo() -> Box<Fn(u32) -> u32> {
}
```

This error occurs when an attempt is made to use data captured by a closure,
when that data may no longer exist. It's most commonly seen when attempting to
return a closure as shown in the previous code example.

Notice that `x` is stack-allocated by `foo()`. By default, Rust captures
closed-over data by reference. This means that once `foo()` returns, `x` no
longer exists. An attempt to access `x` within the closure would thus be
Expand Down

0 comments on commit 7f11fd0

Please sign in to comment.