在 Rust 中捕获循环计数器副本的函数
Function that captures a copy of the loop counter in 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";
}
我正在寻找与此等效的 Rust。目前,我有以下想法:
let mut v: Vec<Box<Fn() -> i32>> = vec![];
for i in 1..6 {
v.push((|i| {Box::new(move || i)})(i));
}
for f in v {
println!("{}", f());
}
它工作正常,但我不确定这是否是首选方式。是否真的需要调用帮助程序函数来实现这一点,或者是否有更惯用的方法?
怎么样只是:
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());
}
}
相关文章:
- 循环在计数器中不起作用
- 用callgrind追踪不必要的副本
- 关于:C++中异常对象的范围:为什么我没有得到副本?
- python集合的C++等价物是什么.计数器
- 在为LINUX创建共享库时,如何避免STL的私有/弱副本
- 检查注册表项是否链接到(或副本)另一个注册表项
- Python 集合.计数器,如何避免重复查找
- 请解释字谜的代码,我看不懂计数器数组,每个值已经是0
- 为什么构建目录中新构建的共享库与安装目录中的副本具有不同的依赖项集?
- C++基于范围的 for 循环和元素副本
- 创建提升::shared_ptr的深层副本
- 如何从构造函数副本 T(const T&)调用对象 T?
- 副本初始化的默认模板参数推导
- std::shared_ptr 自定义参考计数器
- 英特尔 TBB 程序不会终止,可能会误用参考计数器
- C++深浅的副本
- 将相同共享指针的副本存储在不同的向量中是否是一种好的做法?
- Eigen - matrix.transpose 会创建矩阵的副本吗?
- 不正确的比较和交换计数器输出用于快速排序功能
- 在 Rust 中捕获循环计数器副本的函数