Struct optional::Optioned
[−]
[src]
pub struct Optioned<T: Noned + Copy> { /* fields omitted */ }
An Option<T>
-like structure that takes only as much space as the enclosed
value, at the cost of removing one particular None
value from the value
domain (see Noned
)
Methods
impl<T: Noned + Copy> Optioned<T>
[src]
pub fn some(t: T) -> Self
[src]
Create an Optioned<T>
that is some(t)
.
Panics
panics if the supplied value is the None value
Examples
Optioned::<i32>::some(1); // Optioned(1)
Optioned::<f64>::some(std::f64::NAN); // panic!s
pub fn none() -> Self
[src]
pub fn is_none(&self) -> bool
[src]
Returns true
if this Optioned
is None
, false
otherwise.
pub fn is_some(&self) -> bool
[src]
Returns true
if this Optioned
contains a value, false
otherwise.
pub fn expect(&self, msg: &str) -> T
[src]
Unwraps the value, if any, else panics with the given message.
Panics
if self is None
Examples
For Some(_), the corresponding value is returned.
assert_eq!(42u8, Optioned::some(42u8).expect("FAIL"));
On None, it panics with the given message.
Optioned::<u8>::none().expect("FAIL"); // panics with FAIL
pub fn unwrap(&self) -> T
[src]
Unwraps the value, if any, else panics with "unwrap called on None".
Panics
if self is None
Examples
For Some(_)
, the corresponding value is returned.
assert_eq!(42u8, Optioned::some(42u8).unwrap());
On None
, it panics with the given message.
Optioned::<u8>::none().unwrap(); // panics
pub fn unpack(&self) -> T
[src]
Returns the contained value, even if None.
Examples
assert_eq!(-128i8, none().unpack()); assert_eq!(1u32, some(1).unpack());
pub fn unwrap_or(&self, def: T) -> T
[src]
Returns the contained value or a default.
Examples
assert_eq!(-1i8, some(-1i8).unwrap_or(127i8)); assert_eq!(42u16, none().unwrap_or(42u16));
pub fn unwrap_or_else<F>(self, f: F) -> T where
F: FnOnce() -> T,
[src]
F: FnOnce() -> T,
Returns the contained value or a calculated default.
Examples
assert_eq!(-1i8, some(-1i8).unwrap_or_else(|| panic!())); assert_eq!(42u16, none().unwrap_or_else(|| 42u16));
pub fn map<U, F>(self, f: F) -> Option<U> where
F: FnOnce(T) -> U,
[src]
F: FnOnce(T) -> U,
Maps the Optioned
to an Option<U>
by applying the function over the
contained value, if any.
Examples
assert_eq!(Some(-42), some(42i8).map(|x| -x)); assert_eq!(None, none::<i8>().map(|x| -x));
pub fn map_t<U, F>(self, f: F) -> Optioned<U> where
F: FnOnce(T) -> U,
U: Noned + Copy,
[src]
F: FnOnce(T) -> U,
U: Noned + Copy,
Maps the Optioned<T>
to an Optioned<U>
by applying the function over
the contained value, if any. Requires that the result type of the
function be Noned + Copy
, as other types aren't compatible with
Optioned.
Examples
assert_eq!(some(-42), some(42i8).map_t(|x| -x)); assert_eq!(none::<i8>(), none::<i8>().map_t(|x| -x));
pub fn map_or<U, F>(self, default: U, f: F) -> U where
F: FnOnce(T) -> U,
[src]
F: FnOnce(T) -> U,
Maps the contained value to a U
by applying the function or return a
default.
Examples
assert_eq!("1", some(1usize).map_or("Unknown".to_string(), |b| b.to_string())); assert_eq!("Unknown", none::<usize>().map_or("Unknown".to_string(), |b| b.to_string()));
pub fn map_or_else<U, D, F>(self, default: D, f: F) -> U where
D: FnOnce() -> U,
F: FnOnce(T) -> U,
[src]
D: FnOnce() -> U,
F: FnOnce(T) -> U,
Maps a value to a U
by applying the function or return a computed
default.
Examples
assert_eq!("1", some(1usize).map_or_else(|| "Unknown".to_string(), |b| b.to_string())); assert_eq!("Unknown", none::<usize>().map_or_else( || "Unknown".to_string(), |b| b.to_string()));
pub fn take(&mut self) -> Option<T>
[src]
Takes the value out of the Optioned
and returns ist as
Option<T>
, changing self to None
.
Examples
let mut x = some(1u8); assert_eq!(Some(1u8), x.take()); assert!(x.is_none());
pub fn as_slice(&self) -> &[T]
[src]
Return a possibly empty slice over the contained value, if any.
Examples
assert_eq!(&[42], some(42u8).as_slice()); assert!(none::<i16>().as_slice().is_empty());
ⓘImportant traits for OptionedIter<T>pub fn iter(&self) -> OptionedIter<T>
[src]
return an iterator over all contained (that is zero or one) values.
Examples
assert_eq!(None, none::<u64>().iter().next()); assert_eq!(Some(42u64), some(42u64).iter().next());
Trait Implementations
impl<T: Copy + Noned + Copy> Copy for Optioned<T>
[src]
impl<T: Clone + Noned + Copy> Clone for Optioned<T>
[src]
fn clone(&self) -> Optioned<T>
[src]
Returns a copy of the value. Read more
fn clone_from(&mut self, source: &Self)
1.0.0[src]
Performs copy-assignment from source
. Read more
impl<T> PartialEq for Optioned<T> where
T: OptEq + Noned + Copy,
[src]
T: OptEq + Noned + Copy,
Equality works as usual.
Examples
assert_eq!(some(1u8), some(1u8)); assert_eq!(none::<u32>(), none::<u32>());
fn eq(&self, other: &Self) -> bool
[src]
This method tests for self
and other
values to be equal, and is used by ==
. Read more
fn ne(&self, other: &Rhs) -> bool
1.0.0[src]
This method tests for !=
.
impl<T> Eq for Optioned<T> where
T: OptEq + Noned + Copy,
[src]
T: OptEq + Noned + Copy,
impl<T> PartialOrd for Optioned<T> where
T: PartialEq + OptEq + OptOrd + Noned + Copy,
[src]
T: PartialEq + OptEq + OptOrd + Noned + Copy,
fn partial_cmp(&self, other: &Self) -> Option<Ordering>
[src]
This method returns an ordering between self
and other
values if one exists. Read more
fn lt(&self, other: &Rhs) -> bool
1.0.0[src]
This method tests less than (for self
and other
) and is used by the <
operator. Read more
fn le(&self, other: &Rhs) -> bool
1.0.0[src]
This method tests less than or equal to (for self
and other
) and is used by the <=
operator. Read more
fn gt(&self, other: &Rhs) -> bool
1.0.0[src]
This method tests greater than (for self
and other
) and is used by the >
operator. Read more
fn ge(&self, other: &Rhs) -> bool
1.0.0[src]
This method tests greater than or equal to (for self
and other
) and is used by the >=
operator. Read more
impl<T> Ord for Optioned<T> where
T: Eq + OptEq + OptOrd + Noned + Copy,
[src]
T: Eq + OptEq + OptOrd + Noned + Copy,
fn cmp(&self, other: &Self) -> Ordering
[src]
This method returns an Ordering
between self
and other
. Read more
fn max(self, other: Self) -> Self
1.21.0[src]
Compares and returns the maximum of two values. Read more
fn min(self, other: Self) -> Self
1.21.0[src]
Compares and returns the minimum of two values. Read more
impl<T> Hash for Optioned<T> where
T: Noned + Copy + Hash,
[src]
T: Noned + Copy + Hash,
fn hash<H>(&self, state: &mut H) where
H: Hasher,
[src]
H: Hasher,
Feeds this value into the given [Hasher
]. Read more
fn hash_slice<H>(data: &[Self], state: &mut H) where
H: Hasher,
1.3.0[src]
H: Hasher,
Feeds a slice of this type into the given [Hasher
]. Read more
impl<T: Noned + Copy + Debug> Debug for Optioned<T>
[src]
fn fmt(&self, f: &mut Formatter) -> Result<(), Error>
[src]
Formats the value using the given formatter. Read more