Skip to content

Commit aa2aca2

Browse files
committed
Move Result::unwrap_or_default
1 parent 15f57a6 commit aa2aca2

File tree

1 file changed

+37
-36
lines changed

1 file changed

+37
-36
lines changed

library/core/src/result.rs

Lines changed: 37 additions & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -1077,6 +1077,43 @@ impl<T, E> Result<T, E> {
10771077
}
10781078
}
10791079

1080+
/// Returns the contained [`Ok`] value or a default
1081+
///
1082+
/// Consumes the `self` argument then, if [`Ok`], returns the contained
1083+
/// value, otherwise if [`Err`], returns the default value for that
1084+
/// type.
1085+
///
1086+
/// # Examples
1087+
///
1088+
/// Converts a string to an integer, turning poorly-formed strings
1089+
/// into 0 (the default value for integers). [`parse`] converts
1090+
/// a string to any other type that implements [`FromStr`], returning an
1091+
/// [`Err`] on error.
1092+
///
1093+
/// ```
1094+
/// let good_year_from_input = "1909";
1095+
/// let bad_year_from_input = "190blarg";
1096+
/// let good_year = good_year_from_input.parse().unwrap_or_default();
1097+
/// let bad_year = bad_year_from_input.parse().unwrap_or_default();
1098+
///
1099+
/// assert_eq!(1909, good_year);
1100+
/// assert_eq!(0, bad_year);
1101+
/// ```
1102+
///
1103+
/// [`parse`]: str::parse
1104+
/// [`FromStr`]: crate::str::FromStr
1105+
#[inline]
1106+
#[stable(feature = "result_unwrap_or_default", since = "1.16.0")]
1107+
pub fn unwrap_or_default(self) -> T
1108+
where
1109+
T: Default,
1110+
{
1111+
match self {
1112+
Ok(x) => x,
1113+
Err(_) => Default::default(),
1114+
}
1115+
}
1116+
10801117
////////////////////////////////////////////////////////////////////////
10811118
// Boolean operations on the values, eager and lazy
10821119
/////////////////////////////////////////////////////////////////////////
@@ -1458,42 +1495,6 @@ impl<T: fmt::Debug, E> Result<T, E> {
14581495
}
14591496
}
14601497

1461-
impl<T: Default, E> Result<T, E> {
1462-
/// Returns the contained [`Ok`] value or a default
1463-
///
1464-
/// Consumes the `self` argument then, if [`Ok`], returns the contained
1465-
/// value, otherwise if [`Err`], returns the default value for that
1466-
/// type.
1467-
///
1468-
/// # Examples
1469-
///
1470-
/// Converts a string to an integer, turning poorly-formed strings
1471-
/// into 0 (the default value for integers). [`parse`] converts
1472-
/// a string to any other type that implements [`FromStr`], returning an
1473-
/// [`Err`] on error.
1474-
///
1475-
/// ```
1476-
/// let good_year_from_input = "1909";
1477-
/// let bad_year_from_input = "190blarg";
1478-
/// let good_year = good_year_from_input.parse().unwrap_or_default();
1479-
/// let bad_year = bad_year_from_input.parse().unwrap_or_default();
1480-
///
1481-
/// assert_eq!(1909, good_year);
1482-
/// assert_eq!(0, bad_year);
1483-
/// ```
1484-
///
1485-
/// [`parse`]: str::parse
1486-
/// [`FromStr`]: crate::str::FromStr
1487-
#[inline]
1488-
#[stable(feature = "result_unwrap_or_default", since = "1.16.0")]
1489-
pub fn unwrap_or_default(self) -> T {
1490-
match self {
1491-
Ok(x) => x,
1492-
Err(_) => Default::default(),
1493-
}
1494-
}
1495-
}
1496-
14971498
#[unstable(feature = "unwrap_infallible", reason = "newly added", issue = "61695")]
14981499
impl<T, E: Into<!>> Result<T, E> {
14991500
/// Returns the contained [`Ok`] value, but never panics.

0 commit comments

Comments
 (0)