gpt4 book ai didi

rust - 为 Iterator 实现 is_empty 的规范方法是什么?

转载 作者:行者123 更新时间:2023-11-29 07:44:09 31 4
gpt4 key购买 nike

我有一些实现 std::iter::Iterator 的东西,我想知道是否有 > 0 元素。这样做的标准方法是什么? count() > 0 看起来太贵了。

我看到两个候选者:any(|_| true)nth(0).is_some(),但我应该选择哪一个,以便 future 的读者可以一眼就能理解我在这里检查的是什么?

最佳答案

我会写 iter.next().is_some()

但是,您需要注意这样做会推进迭代器

fn main() {
let scores = [1, 2, 3];
let mut iter = scores.iter();

println!("{}", iter.next().is_some()); // true
println!("{}", iter.next().is_some()); // true
println!("{}", iter.next().is_some()); // true
println!("{}", iter.next().is_some()); // false
}

在很多情况下我会使用 Peekable :

fn main() {
let scores = [1, 2, 3];
let mut iter = scores.iter().peekable();

println!("{}", iter.peek().is_some()); // true
println!("{}", iter.peek().is_some()); // true
println!("{}", iter.peek().is_some()); // true
println!("{}", iter.peek().is_some()); // true
}

so a future reader can understand on sight

我会 add a method on iterator名为 is_empty

关于rust - 为 Iterator 实现 is_empty 的规范方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45761364/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com