10 个版本

0.4.0 2024年6月23日
0.3.1 2021年10月31日
0.3.0 2021年9月9日
0.2.2 2021年7月30日
0.1.3 2021年4月21日

#485Rust 模式

Download history 271/week @ 2024-05-03 190/week @ 2024-05-10 233/week @ 2024-05-17 172/week @ 2024-05-24 265/week @ 2024-05-31 169/week @ 2024-06-07 245/week @ 2024-06-14 327/week @ 2024-06-21 154/week @ 2024-06-28 118/week @ 2024-07-05 248/week @ 2024-07-12 157/week @ 2024-07-19 150/week @ 2024-07-26 223/week @ 2024-08-02 144/week @ 2024-08-09 71/week @ 2024-08-16

616 每月下载量
用于 7 个crate(直接使用 3 个)

MIT/Apache

24KB
285

Maintenance

crates.io docs.rs dependency status

Stable Nightly Miri

iter_fixed

提供了一种类型和特质,可以将固定大小的集合(如数组)转换为 IteratorFixed,它可以像普通 Iterator 一样使用,但具有编译时保证的长度。这使我们能够在运行时无需执行不必要的检查,将它们转换回固定大小的集合。

IteratorFixed 提供了稳定的方法,如 mapinspectenumerateziprevcopiedcloned,以及夜间构建的 skipstep_bychaintakeflatten

但是它不能也不太可能支持像 filtertake_while 这样的方法,这些方法会在运行时影响长度。

⚠️ 试验性

此代码目前非常试验性,类型名称、函数名称、特质界限等所有内容都可能发生变化。

来源

此项目受 @leonardo-m 的想法启发 https://github.com/rust-lang/rust/issues/80094#issuecomment-749260428

示例

// simply reverse an Array
let rev_array: [_; 4] = [1, 3, 2, 7]
    .into_iter_fixed()
    .rev()
    .collect();
assert_eq!(rev_array, [7, 2, 3, 1]);

// .. and compute sum with values of a second array multiplied by 10
let sum_array: [_; 4] = rev_array
    .into_iter_fixed()
    .zip([4,1,3,7])
    .map(|(a, b)| a + (b * 10))
    .collect();
assert_eq!(sum_array, [47, 12, 33, 71]);

您还可以查看示例: matrix.rsvector.rs

当前版本:0.4.0

无 std

此crate无需完整的标准库即可运行

此处提供一些额外信息

许可证:MIT OR Apache-2.0

iter_fixed 在MIT许可证和Apache许可证(版本2.0)的条款下分发。

详情请参阅LICENSE-APACHE和LICENSE-MIT。

贡献

除非您明确声明,否则您提交给iter_fixed以供包含在内的任何贡献,根据Apache-2.0许可证的定义,将按上述方式双许可,不附加任何额外的条款或条件。

无运行时依赖

特性