惯用法使用过滤器()

时间:2016-11-10 20:52:41

标签: for-loop filter rust

使用filter时,您会收到引用,因为filter does not return ownership。但是iter()已经引用了您正在迭代的内容,因此您获得的代码如下所示:

fn main() {
    let mut vec: Vec<(bool, i32)> = Vec::new();
    vec.push((true, 1));
    vec.push((false, 2));
    vec.push((true, 3));
    for &(_, x) in vec.iter().filter(|&&(exists, _)| exists) {
        println!("{}", x);
    }
}

这对我来说似乎很多&。这被认为是实施filter()的惯用方法吗?

1 个答案:

答案 0 :(得分:4)

简而言之yes。虽然在您的特定示例中,您可以使用into_iter来获取确实返回所有权的迭代器。