1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
use std::iter::*;
use util::*;
pub use util::Process as Errors;
pub trait GetErrors<T, E> : Sized {
fn errors(self) -> FilterMap<Self, fn(Result<T,E>) -> Option<E>>;
}
impl<T, E, I> GetErrors<T, E> for I
where I: Iterator<Item = Result<T, E>> + Sized
{
fn errors(self) -> FilterMap<Self, fn(Result<T,E>) -> Option<E>> {
self.filter_map(GetErr::get_err)
}
}
#[test]
fn test_compile() {
use std::str::FromStr;
let _ : Result<_, ::std::num::ParseIntError> = ["1", "2", "3", "4", "5"]
.into_iter()
.map(|e| usize::from_str(e))
.errors()
.process(|e| { println!("Error: {:?}", e); Ok(()) });
}