basin2_lib/ilib/
mod.rs

1mod atomic_set;
2mod atomic_ref;
3mod whitelist;
4mod registry;
5mod atomic;
6pub use atomic_set::AtomicSet;
7pub use atomic_ref::AtomicRef;
8pub use whitelist::Whitelist;
9pub use registry::{ Registry, RegistryItem };
10pub use atomic::Atomic;
11use std::iter::FromIterator;
12use crate::Result;
13
14pub trait TryCollect<K>: Iterator {
15    fn try_collect<B: FromIterator<K>>(self) -> Result<B> where Self: Sized;
16}
17
18impl<K, T: Iterator<Item=Result<K>>> TryCollect<K> for T {
19    fn try_collect<B: FromIterator<K>>(self) -> Result<B> where Self: Sized {
20        let collected: Vec<Result<K>> = self.collect();
21        let mut results = vec![];
22        for item in collected {
23            results.push(item?);
24        }
25        return Ok(B::from_iter(results));
26    }
27}