Skip to content

Commit 2031e99

Browse files
committed
Added implementations for TryFrom<{int}> for NonZero{int}
1 parent 4512721 commit 2031e99

File tree

1 file changed

+37
-0
lines changed

1 file changed

+37
-0
lines changed

src/libcore/convert/num.rs

+37
Original file line numberDiff line numberDiff line change
@@ -445,3 +445,40 @@ nzint_impl_from! { NonZeroU16, NonZeroI128, #[stable(feature = "nz_int_conv", si
445445
nzint_impl_from! { NonZeroU32, NonZeroI64, #[stable(feature = "nz_int_conv", since = "1.41.0")] }
446446
nzint_impl_from! { NonZeroU32, NonZeroI128, #[stable(feature = "nz_int_conv", since = "1.41.0")] }
447447
nzint_impl_from! { NonZeroU64, NonZeroI128, #[stable(feature = "nz_int_conv", since = "1.41.0")] }
448+
449+
macro_rules! nzint_impl_try_from_int {
450+
($Int: ty, $NonZeroInt: ty, #[$attr:meta], $doc: expr) => {
451+
#[$attr]
452+
#[doc = $doc]
453+
impl TryFrom<$Int> for $NonZeroInt {
454+
type Error = TryFromIntError;
455+
456+
#[inline]
457+
fn try_from(value: $Int) -> Result<Self, Self::Error> {
458+
Self::new(value).ok_or(TryFromIntError(()))
459+
}
460+
}
461+
};
462+
($Int: ty, $NonZeroInt: ty, #[$attr:meta]) => {
463+
nzint_impl_try_from_int!($Int,
464+
$NonZeroInt,
465+
#[$attr],
466+
concat!("Attempts to convert `",
467+
stringify!($Int),
468+
"` to `",
469+
stringify!($NonZeroInt),
470+
"`."));
471+
}
472+
}
473+
474+
// Int -> Non-zero Int
475+
nzint_impl_try_from_int! { u8, NonZeroU8, #[stable(feature = "nzint_try_from_int_conv", since = "1.46.0")] }
476+
nzint_impl_try_from_int! { u16, NonZeroU16, #[stable(feature = "nzint_try_from_int_conv", since = "1.46.0")] }
477+
nzint_impl_try_from_int! { u32, NonZeroU32, #[stable(feature = "nzint_try_from_int_conv", since = "1.46.0")] }
478+
nzint_impl_try_from_int! { u64, NonZeroU64, #[stable(feature = "nzint_try_from_int_conv", since = "1.46.0")] }
479+
nzint_impl_try_from_int! { u128, NonZeroU128, #[stable(feature = "nzint_try_from_int_conv", since = "1.46.0")] }
480+
nzint_impl_try_from_int! { i8, NonZeroI8, #[stable(feature = "nzint_try_from_int_conv", since = "1.46.0")] }
481+
nzint_impl_try_from_int! { i16, NonZeroI16, #[stable(feature = "nzint_try_from_int_conv", since = "1.46.0")] }
482+
nzint_impl_try_from_int! { i32, NonZeroI32, #[stable(feature = "nzint_try_from_int_conv", since = "1.46.0")] }
483+
nzint_impl_try_from_int! { i64, NonZeroI64, #[stable(feature = "nzint_try_from_int_conv", since = "1.46.0")] }
484+
nzint_impl_try_from_int! { i128, NonZeroI128, #[stable(feature = "nzint_try_from_int_conv", since = "1.46.0")] }

0 commit comments

Comments
 (0)