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

时间:2015-01-27 07:12:44

标签: rust

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

myvec.iter().map(|x| some_operation(x)).count()

count的调用会触发要使用的迭代器链,但也会产生非单位结果,这是不希望的。

我正在寻找像

这样的东西
myvec.iter().map(|x| some_operation(x)).consume()

应该等同于

for _ in myvec.iter().map(|x| some_operation(x)) {}

2 个答案:

答案 0 :(得分:7)

不,Rust没有这个。

were several个讨论,甚至an RFC关于对迭代器进行for_each()操作,迭代器会为迭代器的每个元素执行一个闭包,消耗它,但没有还有。

请考虑使用for循环:

for x in myvec.iter() {
    some_operation(x);
}

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

答案 1 :(得分:4)

Iterator::for_each做你想做的事:

public IActionResult Login([FromForm] LoginModel entry) {
    if (!ModelState.IsValid) {
        return BadRequest(ModelState);
    }
    // access the username and password
    var username = entry.username;
    var password = entry.password;

    return Ok();
}