try_opt 0.2.0

[deprecated] Like try!, but for Option
Documentation
  • Coverage
  • 50%
    1 out of 2 items documented1 out of 1 items with examples
  • Size
  • Source code size: 3.31 kB This is the summed size of all the files inside the crates.io package for this release.
  • Documentation size: 1.06 MB This is the summed size of all files generated by rustdoc for all configured targets
  • Ø build duration
  • this release: 9s Average build duration of successful builds.
  • all releases: 9s Average build duration of successful builds in releases after 2024-10-23.
  • Links
  • crumblingstatue/try_opt
    5 0 0
  • crates.io
  • Dependencies
  • Versions
  • Owners
  • crumblingstatue

Deprecated

Rust now allows the ? operator to be used on Option. The try_opt! example further below can be rewritten as the following:

use std::collections::HashMap;

fn map_add_checked(map: &HashMap<&str, i32>, lhs: &str, rhs: &str) -> Option<i32> {
    let lhs = map.get(lhs)?;
    let rhs = map.get(rhs)?;
    lhs.checked_add(*rhs)
}

fn main() {
    let mut map = HashMap::new();
    map.insert("foo", 2);
    map.insert("bar", 4);
    map.insert("baz", 12);
    assert_eq!(map_add_checked(&map, "foo", "bar"), Some(6));
    assert_eq!(map_add_checked(&map, "baz", "qux"), None);
}

Helper macro for unwrapping Option values while returning early with an error if the value of the expression is None. Can only be used in functions that return Option because of the early return of None that it provides.

Examples

#[macro_use]
extern crate try_opt;

use std::collections::HashMap;

fn map_add_checked(map: &HashMap<&str, i32>, lhs: &str, rhs: &str) -> Option<i32> {
    let lhs = try_opt!(map.get(lhs));
    let rhs = try_opt!(map.get(rhs));
    lhs.checked_add(*rhs)
}

fn main() {
    let mut map = HashMap::new();
    map.insert("foo", 2);
    map.insert("bar", 4);
    map.insert("baz", 12);
    assert_eq!(map_add_checked(&map, "foo", "bar"), Some(6));
    assert_eq!(map_add_checked(&map, "baz", "qux"), None);
}