3 个不稳定版本
0.2.1 | 2022年1月2日 |
---|---|
0.2.0 | 2021年6月14日 |
0.1.0 | 2021年5月2日 |
2101 在 Rust 模式
每月下载 132 次
用于 6 个crate(4个直接使用)
26KB
724 行
iterator-ext:扩展 Rust 的 Iterator
特例。
使用方法
该crate提供了IteratorExt
特例,它扩展了实现了Iterator
的类型的 capability。它提供了类似于Iterator
的更多易出错的适配器,如try_filter()
和try_flatten()
。
示例演示了适配器的使用。它累计从0到9的值,并仅保留偶数结果。当累计超过10时,它会引发错误。
use iterator_ext::IteratorExt;
//!
let results: Vec<_> = (0..10)
.map(Ok)
.try_scan(0, |acc, val| {
*acc += val;
if *acc <= 10 {
Ok(Some(*acc))
} else {
Err("exceed limit")
}
})
.try_filter(|val| Ok(val % 2 == 0))
.collect();
//!
assert_eq!(results, vec![Ok(0), Ok(6), Ok(10), Err("exceed limit")]);
许可证
MIT 许可证。请参阅LICENSE.txt文件。
lib.rs
:
Iterator 特例扩展。
IteratorExt
特例扩展了实现了Iterator
的类型的 capability。它提供了类似于Iterator
的更多易出错的适配器,如try_filter()
和try_flatten()
。
示例演示了适配器的使用。它累计从0到9的值,并仅保留偶数结果。当累计超过10时,它会引发错误。
use iterator_ext::IteratorExt;
let results: Vec<_> = (0..10)
.map(Ok)
.try_scan(0, |acc, val| {
*acc += val;
if *acc <= 10 {
Ok(Some(*acc))
} else {
Err("exceed limit")
}
})
.try_filter(|val| Ok(val % 2 == 0))
.collect();
assert_eq!(results, vec![Ok(0), Ok(6), Ok(10), Err("exceed limit")]);