Lightweight error-handling for transforming values into std::io::Result. Provides:

Examples

```rust use std::io::Result;

fn third_element(slice: &[usize]) -> Result<&usize> { // Using oops to add context to a None slice.iter().nth(3).oops("No third element") }

fn parse_batch(slice: &[&str]) -> Result> { slice .iter() .map(|v| { v .parse::()

            // Using lazy_oops to add debug messages
            .lazy_oops(|| format!("Failed to parse {} from {:?}", v, slice))
    })
    .collect()

}

asserteq!( // No third element thirdelement(&[1, 2, 3]).err().unwrap().kind(), std::io::ErrorKind::Other );

asserteq!( // Failed to parse lo from ["2", "3", "7", "lo", "11"] parsebatch(&["2", "3", "7", "lo", "11"]).err().unwrap().kind(), std::io::ErrorKind::Other ); ```