| 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. |
| |
| 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. |
| } |
| } |
| ``` |
| |
| 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 |
| } |
| } |
| ``` |