pub enum Option<T> {
None,
Some(T),
}Expand description
The Option type. See the module level documentation for more.
Variants§
Implementations§
Source§impl<T> Option<T>
impl<T> Option<T>
1.70.0 (const: unstable) · Sourcepub fn is_some_and(self, f: impl FnOnce(T) -> bool) -> bool
pub fn is_some_and(self, f: impl FnOnce(T) -> bool) -> bool
Returns true if the option is a Some and the value inside of it matches a predicate.
§Examples
let x: Option<u32> = Some(2);
assert_eq!(x.is_some_and(|x| x > 1), true);
let x: Option<u32> = Some(0);
assert_eq!(x.is_some_and(|x| x > 1), false);
let x: Option<u32> = None;
assert_eq!(x.is_some_and(|x| x > 1), false);
let x: Option<String> = Some("ownership".to_string());
assert_eq!(x.as_ref().is_some_and(|x| x.len() > 1), true);
println!("still alive {:?}", x);1.82.0 (const: unstable) · Sourcepub fn is_none_or(self, f: impl FnOnce(T) -> bool) -> bool
pub fn is_none_or(self, f: impl FnOnce(T) -> bool) -> bool
Returns true if the option is a None or the value inside of it matches a predicate.
§Examples
let x: Option<u32> = Some(2);
assert_eq!(x.is_none_or(|x| x > 1), true);
let x: Option<u32> = Some(0);
assert_eq!(x.is_none_or(|x| x > 1), false);
let x: Option<u32> = None;
assert_eq!(x.is_none_or(|x| x > 1), true);
let x: Option<String> = Some("ownership".to_string());
assert_eq!(x.as_ref().is_none_or(|x| x.len() > 1), true);
println!("still alive {:?}", x);1.0.0 (const: 1.48.0) · Sourcepub const fn as_ref(&self) -> Option<&T>
pub const fn as_ref(&self) -> Option<&T>
Converts from &Option<T> to Option<&T>.
§Examples
Calculates the length of an Option<String> as an Option<usize>
without moving the String. The map method takes the self argument by value,
consuming the original, so this technique uses as_ref to first take an Option to a
reference to the value inside the original.
let text: Option<String> = Some("Hello, world!".to_string());
// First, cast `Option<String>` to `Option<&String>` with `as_ref`,
// then consume *that* with `map`, leaving `text` on the stack.
let text_length: Option<usize> = text.as_ref().map(|s| s.len());
println!("still can print text: {text:?}");1.0.0 (const: 1.83.0) · Sourcepub const fn as_mut(&mut self) -> Option<&mut T>
pub const fn as_mut(&mut self) -> Option<&mut T>
Converts from &mut Option<T> to Option<&mut T>.
§Examples
1.33.0 (const: 1.84.0) · Sourcepub const fn as_pin_mut(self: Pin<&mut Option<T>>) -> Option<Pin<&mut T>>
pub const fn as_pin_mut(self: Pin<&mut Option<T>>) -> Option<Pin<&mut T>>
1.75.0 (const: 1.84.0) · Sourcepub const fn as_slice(&self) -> &[T]
pub const fn as_slice(&self) -> &[T]
Returns a slice of the contained value, if any. If this is None, an
empty slice is returned. This can be useful to have a single type of
iterator over an Option or slice.
Note: Should you have an Option<&T> and wish to get a slice of T,
you can unpack it via opt.map_or(&[], std::slice::from_ref).
§Examples
assert_eq!(
[Some(1234).as_slice(),