我经常发现自己编写的代码如下:
myvec.iter().map(|x| some_operation(x)).count()
Run Code Online (Sandbox Code Playgroud)
调用count会触发要使用的迭代器链,但也会产生非单位结果,这是不希望的.
我正在寻找类似的东西
myvec.iter().map(|x| some_operation(x)).consume()
Run Code Online (Sandbox Code Playgroud)
这相当于
for _ in myvec.iter().map(|x| some_operation(x)) {}
Run Code Online (Sandbox Code Playgroud)
Iterator::for_each 做你想做的事:
struct Int(i32);
impl Int {
fn print(&self) {
println!("{}", self.0)
}
}
fn main() {
[Int(1), Int(2), Int(3)].into_iter().for_each(Int::print);
}
Run Code Online (Sandbox Code Playgroud)
不,Rust没有这个.
还有是 一些讨论,甚至一个RFC大约有for_each()上,将执行关闭了一个迭代的每个元素迭代器操作,消耗它,但没有什么是那里.
考虑使用for循环代替:
for x in myvec.iter() {
some_operation(x);
}
Run Code Online (Sandbox Code Playgroud)
在这种特殊情况下,它确实看起来比迭代器操作更好.
| 归档时间: |
|
| 查看次数: |
744 次 |
| 最近记录: |