blob: 8fd60412baf01d9cc05611932f9b1712cb5ff064 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
|
A variable used inside an inner function comes from a dynamic environment.
Erroneous code example:
```compile_fail,E0434
fn foo() {
let y = 5;
fn bar() -> u32 {
y // error: can't capture dynamic environment in a fn item; use the
// || { ... } closure form instead.
}
}
```
Inner functions do not have access to their containing environment. 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
}
}
```
|