Trait resiter::while_ok::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());

Implementors§

source§

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