rust - What is the canonical way to implement is_empty for Iterator? -


i have implements std::iter::iterator , want know if there > 0 elements. standard way it? count() > 0 looks expensive.

i see 2 candidates: any(|_| true) , nth(0).is_some(), 1 should pick future reader can understand on sight i'm checking here?

i write iter.next().is_some().

however, need aware doing advances iterator.

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 } 

in many cases i'd use 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 future reader can understand on sight

i'd add method on iterator named is_empty.


Comments

Popular posts from this blog

Is there a better way to structure post methods in Class Based Views -

performance - Why is XCHG reg, reg a 3 micro-op instruction on modern Intel architectures? -

jquery - Responsive Navbar with Sub Navbar -