Crates.io | iterator-ext |
lib.rs | iterator-ext |
version | 0.2.1 |
source | src |
created_at | 2021-05-02 06:53:00.536422 |
updated_at | 2022-01-02 18:32:09.487113 |
description | An extension to Rust's Iterator |
homepage | https://github.com/jerry73204/iterator-ext |
repository | https://github.com/jerry73204/iterator-ext.git |
max_upload_size | |
id | 392129 |
size | 27,097 |
Iterator
trait.The crate provides the IteratorExt
trait extends the capability of those types
that implements Iterator
. It provides try_filter()
, try_flatten()
and more fallible adaptors that are analogous to those of Iterator
.
The example demonstrates the usage of the adaptors. It accumulates the values from 0 to 9, and keeps only even outcomes. It raises error when the accumulation exceeds 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. See LICENSE.txt file.