#非零 #迭代器 #计数 #特质 #元素 #扩展 #计数

已撤回 count-non-zero

扩展Rust的Iterator特质,添加了count_non_zero方法,返回Option类型,以更表达性和类型安全的方式计数元素。此crate提供了一种便捷且符合Rust风格的获取迭代器中非零元素计数的途径,通过利用Rust的类型系统,提高了代码的可读性和安全性。非常适合于区分空迭代器和非空迭代器至关重要的应用,无需手动进行计数检查。

0.2.0 2024年3月16日
0.1.0 2024年3月16日

#non-zero中排名第17

MIT/Apache

5KB

CountNonZero

概述

CountNonZeroExt crate为Rust的标准Iterator特质提供了扩展特质,允许在迭代器中计数非零元素,并返回一个Option<NonZeroUsize>。此方法与Rust的类型系统完美集成,在编译时提供保证,确保结果(如果存在)确实是非零的。在区分零和非零计数至关重要的情况下,此功能特别有用,可以通过利用NonZeroUsize类型优化内存布局和条件逻辑的能力来提高代码效率。

特性

Iterator特质扩展为包含count_non_zero方法。该方法会计算迭代器生成的元素数量,返回一个Option<NonZeroUsize>

使用方法

use std::num::NonZeroUsize;

use count_non_zero_ext::CountNonZeroExt;

fn main() {
    let data = vec![1, 2, 0, 4];
    let count = data.into_iter().filter(|el| el % 2 == 0).count_non_zero();
    
    match count {
        Some(non_zero_count) => println!("Non-zero count of elements: {}", non_zero_count),
        None => println!("Iterator is empty"),
    }
}

无运行时依赖