pub trait CountToNonZeroExt: Iterator {
    // Required method
    fn count_to_non_zero(self) -> Option<NonZeroUsize>;
}
Expand description

An extension trait for iterators to count non-zero elements.

This trait provides an additional method to iterators, count_to_non_zero, which returns an Option<NonZeroUsize> representing the number of elements iterated over that are not zero. This method leverages Rust’s type system to provide a guarantee at compile time that the count is non-zero when Some value is returned.

Required Methods§

source

fn count_to_non_zero(self) -> Option<NonZeroUsize>

Counts the number of non-zero elements the iterator iterates over.

§Returns
  • Some(NonZeroUsize) if the iterator contains non-zero elements, with the count of those elements.
  • None if the iterator is empty or only contains zeros.
§Examples
use count_to_non_zero::CountToNonZeroExt;
let data = vec![0, 1, 2, 0, 3];
let count = data.into_iter().count_to_non_zero();
assert_eq!(count, Some(std::num::NonZeroUsize::new(5).unwrap()));

Implementors§

source§

impl<T> CountToNonZeroExt for T
where T: Iterator,