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 -

reflection - How to access the object-members of an object declaration in kotlin -

php - Doctrine Query Builder Error on Join: [Syntax Error] line 0, col 87: Error: Expected Literal, got 'JOIN' -