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
}
}
}
© 2010 The Rust Project Developers
Licensed under the Apache License, Version 2.0 or the MIT license, at your option.
https://doc.rust-lang.org/error_codes/E0434.html