Trait core_extensions::option_result_ext::OptionExt
source · [−]pub trait OptionExt<T>: ResultLike + TypeIdentity<Type = Option<T>> + Sized {
fn map_ref<'a, U, F>(&'a self, f: F) -> Option<U>
where
T: 'a,
F: FnOnce(&'a T) -> U,
{ ... }
fn map_mut<'a, U, F>(&'a mut self, f: F) -> Option<U>
where
T: 'a,
F: FnOnce(&'a mut T) -> U,
{ ... }
}
Available on crate feature
option_result
only.Expand description
Extension trait for Option
.
Provided Methods
Maps as reference to the contents.
Example
use core_extensions::OptionExt;
struct User{
name: String,
surname: String,
}
let user = Some(User{name: "Bob".to_string(), surname: "Math".to_string()});
let name = user.map_ref(|v| v.name.as_str() );
let surname = user.map_ref(|v| v.surname.as_str() );
assert_eq!(name, Some("Bob"));
assert_eq!(surname, Some("Math"));
Maps as mutable reference to the contents.
Example
use core_extensions::OptionExt;
struct User{
name: String,
surname: String,
}
let mut user = Some(User{name: "Matt".into(), surname: "Parker".into()});
{
let name = user.map_mut(|v|{
v.name.push_str("hew");
v.name.as_str()
});
assert_eq!(name, Some("Matthew"));
}
assert_eq!(user.unwrap().name, "Matthew");