在Rust中捕获循环计数器副本的函数 我有一些C++代码,看起来像这样(简化到没有用的地方,但是我希望你能理解这个想法)。它填充循环中函数的向量,并使每个函数通过复制捕获循环计数器: std::vector<std::function<int()>> v; for(int i = 1; i < N; i++) { v.push_back([i]() {return i;}); } for(auto f: v) { std::cout << f() << "\n"; } std::vector v; 对于(int i=1;i=Vec![]; 因为我在1..6{ v、 推(框::新(移动| | i)); } 对于f/v{ println!(“{}”,f()); } } fn main() { let mut v: Vec<Box<Fn() -> i32>> = vec![]; for i in 1..6 { v.push(Box::new(move || i)); } for f in v { println!("{}", f()); } }

在Rust中捕获循环计数器副本的函数 我有一些C++代码,看起来像这样(简化到没有用的地方,但是我希望你能理解这个想法)。它填充循环中函数的向量,并使每个函数通过复制捕获循环计数器: std::vector<std::function<int()>> v; for(int i = 1; i < N; i++) { v.push_back([i]() {return i;}); } for(auto f: v) { std::cout << f() << "\n"; } std::vector v; 对于(int i=1;i=Vec![]; 因为我在1..6{ v、 推(框::新(移动| | i)); } 对于f/v{ println!(“{}”,f()); } } fn main() { let mut v: Vec<Box<Fn() -> i32>> = vec![]; for i in 1..6 { v.push(Box::new(move || i)); } for f in v { println!("{}", f()); } },c++,rust,C++,Rust,v.push(Box::new(move || i)); 完整的演示: fn main() { let mut v: Vec<Box<Fn() -> i32>> = vec![]; for i in 1..6 { v.push(Box::new(move || i)); } for f in v { println!("{}", f()); } } fn main(){ 让mut v:Ve

v.push(Box::new(move || i));
完整的演示:

fn main() {
    let mut v: Vec<Box<Fn() -> i32>> = vec![];
    for i in 1..6 {
        v.push(Box::new(move || i));
    }

    for f in v {
        println!("{}", f());
    }
}
fn main(){
让mut v:Vec>=Vec![];
因为我在1..6{
v、 推(框::新(移动| | i));
}
对于f/v{
println!(“{}”,f());
}
}
fn main() {
    let mut v: Vec<Box<Fn() -> i32>> = vec![];
    for i in 1..6 {
        v.push(Box::new(move || i));
    }

    for f in v {
        println!("{}", f());
    }
}