Trait WhileOk

Source
pub trait WhileOk<O, E> {
    // Required method
    fn while_ok<F>(self, _: F) -> Result<(), E>
       where F: FnMut(O);
}
Expand description

Extension trait for Iterator<Item = Result<O, E>> to iter until an error is encountered.

Required Methods§

Source

fn while_ok<F>(self, _: F) -> Result<(), E>
where F: FnMut(O),

Perform an on each Ok value. Stop on first Err

use resiter::while_ok::WhileOk;
use std::str::FromStr;

let mut s = 0;

let res = ["1", "2", "3", "4", "5"]
    .iter()
    .map(|txt| usize::from_str(txt))
    .while_ok(|i| s += i);

assert_eq!(s, 15);
assert!(res.is_ok());

When every value is Ok stop the iteration at the end of the iterator:

use resiter::while_ok::WhileOk;
use std::str::FromStr;

let mut s = 0;

let res = ["1", "2", "a", "4", "5"]
    .iter()
    .map(|txt| usize::from_str(txt))
    .while_ok(|i| s += i);

assert_eq!(s, 3);
assert!(res.is_err());

Dyn Compatibility§

This trait is not dyn compatible.

In older versions of Rust, dyn compatibility was called "object safety", so this trait is not object safe.

Implementors§

Source§

impl<I, O, E> WhileOk<O, E> for I
where I: Iterator<Item = Result<O, E>>,