迭代器skip_while不会关闭

问题描述 投票:0回答:1

tl;dr rust 迭代器方法

skip_while
在第一次失败的测试后停止跳过元素(始终返回元素)。如何继续跳过(即不“关闭”跳过)?

Rust 迭代器方法

skip_while()
文档阅读

skip_while()
将闭包作为参数。它将在迭代器的每个元素上调用此闭包,并忽略元素,直到返回
false

返回

false
后,
skip_while()
的工作就结束了,剩下的元素也被yield了。

看到

skip_while
后我希望
false
的“工作还没有结束”。使用迭代器来完成此任务的质朴方法是什么?

例如,这段代码

fn main() {
    let lines = [
        "",
        "a",
        "",
        "b",
        "",
        "c",
    ];
    for line in lines.iter().skip_while(|x| x.is_empty()) {
        println!("line is {:?}, {:?}", line, line.is_empty());
    }
}

打印

line is "a", false
line is "", true
line is "b", false
line is "", true
line is "c", false

我想要打印的代码

line is "a", false
line is "b", false
line is "c", false

如何使用迭代器和迭代过滤器来做到这一点?

rust iterator
1个回答
0
投票

使用

filter
方法

代码片段

fn main() {
    let lines = [
        "",
        "a",
        "",
        "b",
        "",
        "c",
    ];
    for line in lines.iter().filter(|x| !x.is_empty()) {
        println!("line is {:?}, {:?}", line, line.is_empty());
    }
}

© www.soinside.com 2019 - 2024. All rights reserved.