是否存在零开销消耗迭代器?

Byr*_*ron 5 rust

我经常发现自己编写的代码如下:

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)

Fre*_*ios 8

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)


Vla*_*eev 7

不,Rust没有这个.

还有 一些讨论,甚至一个RFC大约有for_each()上,将执行关闭了一个迭代的每个元素迭代器操作,消耗它,但没有什么是那里.

考虑使用for循环代替:

for x in myvec.iter() {
    some_operation(x);
}
Run Code Online (Sandbox Code Playgroud)

在这种特殊情况下,它确实看起来比迭代器操作更好.