【发布时间】:2020-06-26 13:15:45
【问题描述】:
有没有一种有效的方法来为可变迭代器执行drop_while?
单独使用.take_while() 是不够的,因为TakeWhile 是懒惰的:
let s = String::from("abcdefg");
let mut it = s.chars();
it.by_ref().take_while(|x| *x != 'c');
println!("{:?}", it.next());
这会导致Some('a') 和以下警告:
unused `std::iter::TakeWhile` that must be used
这可以通过运行.collect() 来解决,这会导致想要的Some('d'):
let _: String = it.by_ref().take_while(|x| *x < 'c').collect();
但是,这是正确的方法吗?这不会浪费资源吗?
【问题讨论】:
-
iter.find(|x| *x > 'c')?