rust 迭代器skip_while不关闭

oyt4ldly  于 6个月前  发布在  其他
关注(0)|答案(1)|浏览(51)
  • t1; dr* rust迭代器方法skip_while在第一次测试失败后停止跳过元素(总是返回元素)。如何继续跳过(即不要“关闭”跳过)?

Rust迭代器方法skip_while()文档读取
skip_while()接受一个闭包作为参数。它将在迭代器的每个元素上调用这个闭包,并忽略元素,直到返回false
在返回false之后,skip_while()的工作就结束了,其余的元素都被放弃了。
在看到false之后,我希望skip_while的“工作不会结束”。使用迭代器来完成这一任务的一种简单方法是什么?
例如,this code

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


如何使用迭代器和迭代器过滤器实现这一点?

7bsow1i6

7bsow1i61#

使用filter方法。
Code snippet

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

字符串
指纹

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

相关问题