我经常发现自己编写的代码如下:
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)) {}
答案 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();
}