小编Joh*_*han的帖子

将修改其环境的闭包传递给 Rust 中的函数

我有一个捕获并修改其环境的闭包。我想将此闭包传递给接受闭包的函数:

fn main() {
    let mut integer = 5;
    let mut closure_variable = || -> i32 {
        integer += 1;
        integer
    };
    execute_closure(&mut closure_variable);
}

fn execute_closure(closure_argument: &mut Fn() -> i32) {
    let result = closure_argument();
    println!("Result of closure: {}", result);
}
Run Code Online (Sandbox Code Playgroud)

因为闭包修改了它的环境,所以失败了:

fn main() {
    let mut integer = 5;
    let mut closure_variable = || -> i32 {
        integer += 1;
        integer
    };
    execute_closure(&mut closure_variable);
}

fn execute_closure(closure_argument: &mut Fn() -> i32) {
    let result = closure_argument();
    println!("Result of …
Run Code Online (Sandbox Code Playgroud)

closures immutability traits rust

5
推荐指数
1
解决办法
2999
查看次数

标签 统计

closures ×1

immutability ×1

rust ×1

traits ×1