add boolean operator example
This commit is contained in:
parent
834f4b770e
commit
1b58d93bb2
@ -233,6 +233,36 @@
|
||||
//! [`or_else`]: Option::or_else
|
||||
//! [`xor`]: Option::xor
|
||||
//!
|
||||
//! This is an example of using methods like [`and_then`] and [`or`] in a
|
||||
//! pipeline of method calls. Early stages of the pipeline pass failure
|
||||
//! values ([`None`]) through unchanged, and continue processing on
|
||||
//! success values ([`Some`]). Toward the end, [`or`] substitutes an error
|
||||
//! message if it receives [`None`].
|
||||
//!
|
||||
//! ```
|
||||
//! # use std::collections::BTreeMap;
|
||||
//! let mut bt = BTreeMap::new();
|
||||
//! bt.insert(20u8, "foo");
|
||||
//! bt.insert(42u8, "bar");
|
||||
//! let res = vec![0u8, 1, 11, 200, 22]
|
||||
//! .into_iter()
|
||||
//! .map(|x| {
|
||||
//! // `checked_sub()` returns `None` on error
|
||||
//! x.checked_sub(1)
|
||||
//! // same with `checked_mul()`
|
||||
//! .and_then(|x| x.checked_mul(2))
|
||||
//! // `BTreeMap::get` returns `None` on error
|
||||
//! .and_then(|x| bt.get(&x))
|
||||
//! // Substitute an error message if we have `None` so far
|
||||
//! .or(Some(&"error!"))
|
||||
//! .copied()
|
||||
//! // Won't panic because we unconditionally used `Some` above
|
||||
//! .unwrap()
|
||||
//! })
|
||||
//! .collect::<Vec<_>>();
|
||||
//! assert_eq!(res, ["error!", "error!", "foo", "error!", "bar"]);
|
||||
//! ```
|
||||
//!
|
||||
//! ## Iterating over `Option`
|
||||
//!
|
||||
//! An [`Option`] can be iterated over. This can be helpful if you need an
|
||||
|
Loading…
Reference in New Issue
Block a user