mirror of
https://github.com/rust-lang/rust.git
synced 2024-11-02 15:32:06 +00:00
Add long error explanation for E0521
This commit is contained in:
parent
e0d9f79399
commit
ee5ea24d36
@ -267,6 +267,7 @@ E0516: include_str!("./error_codes/E0516.md"),
|
||||
E0517: include_str!("./error_codes/E0517.md"),
|
||||
E0518: include_str!("./error_codes/E0518.md"),
|
||||
E0520: include_str!("./error_codes/E0520.md"),
|
||||
E0521: include_str!("./error_codes/E0521.md"),
|
||||
E0522: include_str!("./error_codes/E0522.md"),
|
||||
E0524: include_str!("./error_codes/E0524.md"),
|
||||
E0525: include_str!("./error_codes/E0525.md"),
|
||||
@ -597,7 +598,6 @@ E0780: include_str!("./error_codes/E0780.md"),
|
||||
E0514, // metadata version mismatch
|
||||
E0519, // local crate and dependency have same (crate-name, disambiguator)
|
||||
// two dependencies have same (crate-name, disambiguator) but different SVH
|
||||
E0521, // borrowed data escapes outside of closure
|
||||
E0523,
|
||||
// E0526, // shuffle indices are not constant
|
||||
// E0540, // multiple rustc_deprecated attributes
|
||||
|
28
compiler/rustc_error_codes/src/error_codes/E0521.md
Normal file
28
compiler/rustc_error_codes/src/error_codes/E0521.md
Normal file
@ -0,0 +1,28 @@
|
||||
Borrowed data escapes outside of closure.
|
||||
|
||||
Erroneous code example:
|
||||
|
||||
```compile_fail,E0521
|
||||
let mut list: Vec<&str> = Vec::new();
|
||||
|
||||
let _add = |el: &str| {
|
||||
list.push(el); // error: `el` escapes the closure body here
|
||||
};
|
||||
```
|
||||
|
||||
A type anotation of a closure parameter implies a new lifetime declaration.
|
||||
Consider to drop it, the compiler is reliably able to infer them.
|
||||
|
||||
```
|
||||
let mut list: Vec<&str> = Vec::new();
|
||||
|
||||
let _add = |el| {
|
||||
list.push(el);
|
||||
};
|
||||
```
|
||||
|
||||
See the [Closure type inference and annotation][closure-infere-annotation] and
|
||||
[Lifetime elision][lifetime-elision] sections of the Book for more details.
|
||||
|
||||
[closure-infere-annotation]: https://doc.rust-lang.org/book/ch13-01-closures.html#closure-type-inference-and-annotation
|
||||
[lifetime-elision]: https://doc.rust-lang.org/reference/lifetime-elision.html
|
Loading…
Reference in New Issue
Block a user