Add unwrap_or_default
method to Result
This commit is contained in:
parent
d337f345ca
commit
1c2151b7f9
@ -792,6 +792,39 @@ impl<T: fmt::Debug, E> Result<T, E> {
|
||||
}
|
||||
}
|
||||
|
||||
impl<T: Default, E> Result<T, E> {
|
||||
/// Returns the contained value or a default
|
||||
///
|
||||
/// Consumes the `self` argument then, if `Ok`, returns the contained
|
||||
/// value, otherwise if `Err`, returns the default value for that
|
||||
/// type.
|
||||
///
|
||||
/// # Examples
|
||||
///
|
||||
/// Convert a string to an integer, turning poorly-formed strings
|
||||
/// into 0 (the default value for integers). `parse` converts
|
||||
/// a string to any other type that implements `FromStr`, returning an
|
||||
/// `Err` on error.
|
||||
///
|
||||
/// ```
|
||||
/// let good_year_from_input = "1909";
|
||||
/// let bad_year_from_input = "190blarg";
|
||||
/// let good_year = good_year_from_input.parse().unwrap_or_default();
|
||||
/// let bad_year = bad_year_from_input.parse().unwrap_or_default();
|
||||
///
|
||||
/// assert_eq!(1909, good_year);
|
||||
/// assert_eq!(0, bad_year);
|
||||
/// ```
|
||||
#[inline]
|
||||
#[stable(feature = "rust1", since = "1.0.0")]
|
||||
pub fn unwrap_or_default(self) -> T {
|
||||
match self {
|
||||
Ok(x) => x,
|
||||
Err(_) => Default::default(),
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// This is a separate function to reduce the code size of the methods
|
||||
#[inline(never)]
|
||||
#[cold]
|
||||
|
@ -183,3 +183,9 @@ pub fn test_iter_mut() {
|
||||
}
|
||||
assert_eq!(err, Err("error"));
|
||||
}
|
||||
|
||||
#[test]
|
||||
pub fn test_unwrap_or_default() {
|
||||
assert_eq!(op1().unwrap_or_default(), 666);
|
||||
assert_eq!(op2().unwrap_or_default(), 0);
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user