example/
example.rs

1use std::ops::Add;
2use unit_ext::*;
3
4fn main() {
5    Some(10)
6        .filter(|n| n > &5)
7        .map(|n| n * 2)
8        .or_else(|| println!("Value too small").ret_none());
9
10    Some(10)
11        .map(|v| println!("Some({v})").ret(v + 10))
12        .or_else(|| println!("Default value").ret_default());
13
14    Some([1, 2, 3, 4])
15        .map(|mut arr| arr.clone_from_slice(&[4, 3, 2, 1]).ret(arr));
16
17    "10".parse::<u8>().map_or_else(
18        |e| eprintln!("{e}").ret_none(),
19        |v| println!("Got here").ret_some(v.add(10)),
20    );
21
22    match "15".parse::<u8>() {
23        Ok(v) => v.add(15).into(),
24        Err(e) => eprintln!("{e}").ret_none(),
25    };
26
27    // One can also use do something like this:
28    "15".parse::<u8>()
29        .inspect_err(|e| eprintln!("{e}"))
30        .ok()
31        .map(|v| v + 15);
32}