extern crate tap;
use tap::*;
#[test]
fn filter_map() {
let values: &[Result<i32, &str>] = &[Ok(3), Err("foo"), Err("bar"), Ok(8)];
let _ = values.iter().filter_map(|result| {
result
.tap_err(|error| println!("Invalid entry: {}", error))
.ok()
});
}
#[test]
fn basic() {
let mut foo = 5;
if 10.tap(|v| foo += *v) > 0 {
assert_eq!(foo, 15);
}
let _: Result<i32, i32> = Err(5).tap_err(|e| foo = *e);
assert_eq!(foo, 5);
let _: Option<i32> = None.tap_none(|| foo = 10);
assert_eq!(foo, 10);
}