Error code E0434

A variable used inside an inner function comes from a dynamic environment.

Erroneous code example:

#![allow(unused)] fn main() { 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:

#![allow(unused)] fn main() { fn foo() { let y = 5; let bar = || { y }; } }

Or replace the captured variable with a constant or a static item:

#![allow(unused)] fn main() { fn foo() { static mut X: u32 = 4; const Y: u32 = 5; fn bar() -> u32 { unsafe { X = 3; } Y } } }