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日 |
#485 在 Rust 模式 中
616 每月下载量
用于 7 个crate(直接使用 3 个)
24KB
285 行
iter_fixed
提供了一种类型和特质,可以将固定大小的集合(如数组)转换为 IteratorFixed
,它可以像普通 Iterator
一样使用,但具有编译时保证的长度。这使我们能够在运行时无需执行不必要的检查,将它们转换回固定大小的集合。
IteratorFixed
提供了稳定的方法,如 map
、inspect
、enumerate
、zip
、rev
、copied
、cloned
,以及夜间构建的 skip
、step_by
、chain
、take
、flatten
。
但是它不能也不太可能支持像 filter
或 take_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.rs
和 vector.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许可证的定义,将按上述方式双许可,不附加任何额外的条款或条件。