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