mirror of
https://github.com/rust-lang/rust.git
synced 2025-01-31 00:53:48 +00:00
Add detailed error message for E0434 #32777
This commit is contained in:
parent
01a0207919
commit
0cfb5a0bb6
@ -948,6 +948,51 @@ use something_which_doesnt_exist;
|
|||||||
Please verify you didn't misspell the import's name.
|
Please verify you didn't misspell the import's name.
|
||||||
"##,
|
"##,
|
||||||
|
|
||||||
|
E0434: r##"
|
||||||
|
This error indicates that a variable usage inside an inner function is invalid
|
||||||
|
because the variable comes from a dynamic environment. Inner functions do not
|
||||||
|
have access to their containing environment.
|
||||||
|
|
||||||
|
Example of erroneous code:
|
||||||
|
|
||||||
|
```compile_fail
|
||||||
|
fn foo() {
|
||||||
|
let y = 5;
|
||||||
|
fn bar() -> u32 {
|
||||||
|
y // error: can't capture dynamic environment in a fn item; use the
|
||||||
|
// || { ... } closure form instead.
|
||||||
|
}
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
Functions do not capture local variables. To fix this error, you can replace the
|
||||||
|
function with a closure:
|
||||||
|
|
||||||
|
```
|
||||||
|
fn foo() {
|
||||||
|
let y = 5;
|
||||||
|
let bar = || {
|
||||||
|
y
|
||||||
|
};
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
or replace the captured variable with a constant or a static item:
|
||||||
|
|
||||||
|
```
|
||||||
|
fn foo() {
|
||||||
|
static mut X: u32 = 4;
|
||||||
|
const Y: u32 = 5;
|
||||||
|
fn bar() -> u32 {
|
||||||
|
unsafe {
|
||||||
|
X = 3;
|
||||||
|
}
|
||||||
|
Y
|
||||||
|
}
|
||||||
|
}
|
||||||
|
```
|
||||||
|
"##,
|
||||||
|
|
||||||
E0435: r##"
|
E0435: r##"
|
||||||
A non-constant value was used to initialise a constant. Example of erroneous
|
A non-constant value was used to initialise a constant. Example of erroneous
|
||||||
code:
|
code:
|
||||||
@ -1044,5 +1089,4 @@ register_diagnostics! {
|
|||||||
E0421, // unresolved associated const
|
E0421, // unresolved associated const
|
||||||
E0427, // cannot use `ref` binding mode with ...
|
E0427, // cannot use `ref` binding mode with ...
|
||||||
E0429, // `self` imports are only allowed within a { } list
|
E0429, // `self` imports are only allowed within a { } list
|
||||||
E0434, // can't capture dynamic environment in a fn item
|
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user