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