From 7bf66d97b63d90debd914d1aab1b71940edcfb0e Mon Sep 17 00:00:00 2001 From: Peter Date: Sun, 10 Nov 2019 17:28:45 +0000 Subject: [PATCH 1/4] From impls for wider NonZero types issue: https://github.com/rust-lang/rust/issues/66196 --- src/libcore/num/mod.rs | 70 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 70 insertions(+) diff --git a/src/libcore/num/mod.rs b/src/libcore/num/mod.rs index 4b9e82c7cfee9..1a8c066173b4d 100644 --- a/src/libcore/num/mod.rs +++ b/src/libcore/num/mod.rs @@ -5250,3 +5250,73 @@ impl_from! { u32, f64, #[stable(feature = "lossless_float_conv", since = "1.6.0" // Float -> Float impl_from! { f32, f64, #[stable(feature = "lossless_float_conv", since = "1.6.0")] } + +// Conversion traits for non-zero integer types +macro_rules! nzint_impl_from { + ($Small: ty, $Large: ty, #[$attr:meta], $doc: expr) => { + #[$attr] + #[doc = $doc] + impl From<$Small> for $Large { + /// Widens a non-zero integer without checking the value is zero. + /// + /// # Safety + /// + /// The value is assumed to be non-zero. + #[inline] + fn from(small: $Small) -> $Large { + unsafe { + <$Large>::new_unchecked(small.get().into()) + } + } + } + }; + ($Small: ty, $Large: ty, #[$attr:meta]) => { + nzint_impl_from!($Small, + $Large, + #[$attr], + concat!("Converts `", + stringify!($Small), + "` to `", + stringify!($Large), + "` losslessly.")); + } +} + +// Non-zero Unsigned -> Non-zero Unsigned +nzint_impl_from! { NonZeroU8, NonZeroU16, #[unstable(feature = "lossless_non_zero_int_conv", issue = "66196")] } +nzint_impl_from! { NonZeroU8, NonZeroU32, #[unstable(feature = "lossless_non_zero_int_conv", issue = "66196")] } +nzint_impl_from! { NonZeroU8, NonZeroU64, #[unstable(feature = "lossless_non_zero_int_conv", issue = "66196")] } +nzint_impl_from! { NonZeroU8, NonZeroU128, #[unstable(feature = "lossless_non_zero_int_conv", issue = "66196")] } +nzint_impl_from! { NonZeroU8, NonZeroUsize, #[unstable(feature = "lossless_non_zero_int_conv", issue = "66196")] } +nzint_impl_from! { NonZeroU16, NonZeroU32, #[unstable(feature = "lossless_non_zero_int_conv", issue = "66196")] } +nzint_impl_from! { NonZeroU16, NonZeroU64, #[unstable(feature = "lossless_non_zero_int_conv", issue = "66196")] } +nzint_impl_from! { NonZeroU16, NonZeroU128, #[unstable(feature = "lossless_non_zero_int_conv", issue = "66196")] } +nzint_impl_from! { NonZeroU32, NonZeroU64, #[unstable(feature = "lossless_non_zero_int_conv", issue = "66196")] } +nzint_impl_from! { NonZeroU32, NonZeroU128, #[unstable(feature = "lossless_non_zero_int_conv", issue = "66196")] } +nzint_impl_from! { NonZeroU64, NonZeroU128, #[unstable(feature = "lossless_non_zero_int_conv", issue = "66196")] } + +// Non-zero Signed -> Non-zero Signed +nzint_impl_from! { NonZeroI8, NonZeroI16, #[unstable(feature = "lossless_non_zero_int_conv", issue = "66196")] } +nzint_impl_from! { NonZeroI8, NonZeroI32, #[unstable(feature = "lossless_non_zero_int_conv", issue = "66196")] } +nzint_impl_from! { NonZeroI8, NonZeroI64, #[unstable(feature = "lossless_non_zero_int_conv", issue = "66196")] } +nzint_impl_from! { NonZeroI8, NonZeroI128, #[unstable(feature = "lossless_non_zero_int_conv", issue = "66196")] } +nzint_impl_from! { NonZeroI8, NonZeroIsize, #[unstable(feature = "lossless_non_zero_int_conv", issue = "66196")] } +nzint_impl_from! { NonZeroI16, NonZeroI32, #[unstable(feature = "lossless_non_zero_int_conv", issue = "66196")] } +nzint_impl_from! { NonZeroI16, NonZeroI64, #[unstable(feature = "lossless_non_zero_int_conv", issue = "66196")] } +nzint_impl_from! { NonZeroI16, NonZeroI128, #[unstable(feature = "lossless_non_zero_int_conv", issue = "66196")] } +nzint_impl_from! { NonZeroI32, NonZeroI64, #[unstable(feature = "lossless_non_zero_int_conv", issue = "66196")] } +nzint_impl_from! { NonZeroI32, NonZeroI128, #[unstable(feature = "lossless_non_zero_int_conv", issue = "66196")] } +nzint_impl_from! { NonZeroI64, NonZeroI128, #[unstable(feature = "lossless_non_zero_int_conv", issue = "66196")] } + +// NonZero UnSigned -> Non-zero Signed +nzint_impl_from! { NonZeroU8, NonZeroI16, #[unstable(feature = "lossless_non_zero_int_conv", issue = "66196")] } +nzint_impl_from! { NonZeroU8, NonZeroI32, #[unstable(feature = "lossless_non_zero_int_conv", issue = "66196")] } +nzint_impl_from! { NonZeroU8, NonZeroI64, #[unstable(feature = "lossless_non_zero_int_conv", issue = "66196")] } +nzint_impl_from! { NonZeroU8, NonZeroI128, #[unstable(feature = "lossless_non_zero_int_conv", issue = "66196")] } +nzint_impl_from! { NonZeroU8, NonZeroIsize, #[unstable(feature = "lossless_non_zero_int_conv", issue = "66196")] } +nzint_impl_from! { NonZeroU16, NonZeroI32, #[unstable(feature = "lossless_non_zero_int_conv", issue = "66196")] } +nzint_impl_from! { NonZeroU16, NonZeroI64, #[unstable(feature = "lossless_non_zero_int_conv", issue = "66196")] } +nzint_impl_from! { NonZeroU16, NonZeroI128, #[unstable(feature = "lossless_non_zero_int_conv", issue = "66196")] } +nzint_impl_from! { NonZeroU32, NonZeroI64, #[unstable(feature = "lossless_non_zero_int_conv", issue = "66196")] } +nzint_impl_from! { NonZeroU32, NonZeroI128, #[unstable(feature = "lossless_non_zero_int_conv", issue = "66196")] } +nzint_impl_from! { NonZeroU64, NonZeroI128, #[unstable(feature = "lossless_non_zero_int_conv", issue = "66196")] } From ae2b192fddb8e5ecc2a7ef40dbffa6bb4b8640d5 Mon Sep 17 00:00:00 2001 From: Peter Date: Sun, 10 Nov 2019 18:08:17 +0000 Subject: [PATCH 2/4] remove irrelevant Safety section --- src/libcore/num/mod.rs | 72 ++++++++++++++++++++---------------------- 1 file changed, 34 insertions(+), 38 deletions(-) diff --git a/src/libcore/num/mod.rs b/src/libcore/num/mod.rs index 1a8c066173b4d..3ad395e2fe09b 100644 --- a/src/libcore/num/mod.rs +++ b/src/libcore/num/mod.rs @@ -5257,13 +5257,9 @@ macro_rules! nzint_impl_from { #[$attr] #[doc = $doc] impl From<$Small> for $Large { - /// Widens a non-zero integer without checking the value is zero. - /// - /// # Safety - /// - /// The value is assumed to be non-zero. #[inline] fn from(small: $Small) -> $Large { + // SAFETY: input type guarantees the value is non-zero unsafe { <$Large>::new_unchecked(small.get().into()) } @@ -5283,40 +5279,40 @@ macro_rules! nzint_impl_from { } // Non-zero Unsigned -> Non-zero Unsigned -nzint_impl_from! { NonZeroU8, NonZeroU16, #[unstable(feature = "lossless_non_zero_int_conv", issue = "66196")] } -nzint_impl_from! { NonZeroU8, NonZeroU32, #[unstable(feature = "lossless_non_zero_int_conv", issue = "66196")] } -nzint_impl_from! { NonZeroU8, NonZeroU64, #[unstable(feature = "lossless_non_zero_int_conv", issue = "66196")] } -nzint_impl_from! { NonZeroU8, NonZeroU128, #[unstable(feature = "lossless_non_zero_int_conv", issue = "66196")] } -nzint_impl_from! { NonZeroU8, NonZeroUsize, #[unstable(feature = "lossless_non_zero_int_conv", issue = "66196")] } -nzint_impl_from! { NonZeroU16, NonZeroU32, #[unstable(feature = "lossless_non_zero_int_conv", issue = "66196")] } -nzint_impl_from! { NonZeroU16, NonZeroU64, #[unstable(feature = "lossless_non_zero_int_conv", issue = "66196")] } -nzint_impl_from! { NonZeroU16, NonZeroU128, #[unstable(feature = "lossless_non_zero_int_conv", issue = "66196")] } -nzint_impl_from! { NonZeroU32, NonZeroU64, #[unstable(feature = "lossless_non_zero_int_conv", issue = "66196")] } -nzint_impl_from! { NonZeroU32, NonZeroU128, #[unstable(feature = "lossless_non_zero_int_conv", issue = "66196")] } -nzint_impl_from! { NonZeroU64, NonZeroU128, #[unstable(feature = "lossless_non_zero_int_conv", issue = "66196")] } +nzint_impl_from! { NonZeroU8, NonZeroU16, #[unstable(feature = "nz_int_conv", issue = "66196")] } +nzint_impl_from! { NonZeroU8, NonZeroU32, #[unstable(feature = "nz_int_conv", issue = "66196")] } +nzint_impl_from! { NonZeroU8, NonZeroU64, #[unstable(feature = "nz_int_conv", issue = "66196")] } +nzint_impl_from! { NonZeroU8, NonZeroU128, #[unstable(feature = "nz_int_conv", issue = "66196")] } +nzint_impl_from! { NonZeroU8, NonZeroUsize, #[unstable(feature = "nz_int_conv", issue = "66196")] } +nzint_impl_from! { NonZeroU16, NonZeroU32, #[unstable(feature = "nz_int_conv", issue = "66196")] } +nzint_impl_from! { NonZeroU16, NonZeroU64, #[unstable(feature = "nz_int_conv", issue = "66196")] } +nzint_impl_from! { NonZeroU16, NonZeroU128, #[unstable(feature = "nz_int_conv", issue = "66196")] } +nzint_impl_from! { NonZeroU32, NonZeroU64, #[unstable(feature = "nz_int_conv", issue = "66196")] } +nzint_impl_from! { NonZeroU32, NonZeroU128, #[unstable(feature = "nz_int_conv", issue = "66196")] } +nzint_impl_from! { NonZeroU64, NonZeroU128, #[unstable(feature = "nz_int_conv", issue = "66196")] } // Non-zero Signed -> Non-zero Signed -nzint_impl_from! { NonZeroI8, NonZeroI16, #[unstable(feature = "lossless_non_zero_int_conv", issue = "66196")] } -nzint_impl_from! { NonZeroI8, NonZeroI32, #[unstable(feature = "lossless_non_zero_int_conv", issue = "66196")] } -nzint_impl_from! { NonZeroI8, NonZeroI64, #[unstable(feature = "lossless_non_zero_int_conv", issue = "66196")] } -nzint_impl_from! { NonZeroI8, NonZeroI128, #[unstable(feature = "lossless_non_zero_int_conv", issue = "66196")] } -nzint_impl_from! { NonZeroI8, NonZeroIsize, #[unstable(feature = "lossless_non_zero_int_conv", issue = "66196")] } -nzint_impl_from! { NonZeroI16, NonZeroI32, #[unstable(feature = "lossless_non_zero_int_conv", issue = "66196")] } -nzint_impl_from! { NonZeroI16, NonZeroI64, #[unstable(feature = "lossless_non_zero_int_conv", issue = "66196")] } -nzint_impl_from! { NonZeroI16, NonZeroI128, #[unstable(feature = "lossless_non_zero_int_conv", issue = "66196")] } -nzint_impl_from! { NonZeroI32, NonZeroI64, #[unstable(feature = "lossless_non_zero_int_conv", issue = "66196")] } -nzint_impl_from! { NonZeroI32, NonZeroI128, #[unstable(feature = "lossless_non_zero_int_conv", issue = "66196")] } -nzint_impl_from! { NonZeroI64, NonZeroI128, #[unstable(feature = "lossless_non_zero_int_conv", issue = "66196")] } +nzint_impl_from! { NonZeroI8, NonZeroI16, #[unstable(feature = "nz_int_conv", issue = "66196")] } +nzint_impl_from! { NonZeroI8, NonZeroI32, #[unstable(feature = "nz_int_conv", issue = "66196")] } +nzint_impl_from! { NonZeroI8, NonZeroI64, #[unstable(feature = "nz_int_conv", issue = "66196")] } +nzint_impl_from! { NonZeroI8, NonZeroI128, #[unstable(feature = "nz_int_conv", issue = "66196")] } +nzint_impl_from! { NonZeroI8, NonZeroIsize, #[unstable(feature = "nz_int_conv", issue = "66196")] } +nzint_impl_from! { NonZeroI16, NonZeroI32, #[unstable(feature = "nz_int_conv", issue = "66196")] } +nzint_impl_from! { NonZeroI16, NonZeroI64, #[unstable(feature = "nz_int_conv", issue = "66196")] } +nzint_impl_from! { NonZeroI16, NonZeroI128, #[unstable(feature = "nz_int_conv", issue = "66196")] } +nzint_impl_from! { NonZeroI32, NonZeroI64, #[unstable(feature = "nz_int_conv", issue = "66196")] } +nzint_impl_from! { NonZeroI32, NonZeroI128, #[unstable(feature = "nz_int_conv", issue = "66196")] } +nzint_impl_from! { NonZeroI64, NonZeroI128, #[unstable(feature = "nz_int_conv", issue = "66196")] } // NonZero UnSigned -> Non-zero Signed -nzint_impl_from! { NonZeroU8, NonZeroI16, #[unstable(feature = "lossless_non_zero_int_conv", issue = "66196")] } -nzint_impl_from! { NonZeroU8, NonZeroI32, #[unstable(feature = "lossless_non_zero_int_conv", issue = "66196")] } -nzint_impl_from! { NonZeroU8, NonZeroI64, #[unstable(feature = "lossless_non_zero_int_conv", issue = "66196")] } -nzint_impl_from! { NonZeroU8, NonZeroI128, #[unstable(feature = "lossless_non_zero_int_conv", issue = "66196")] } -nzint_impl_from! { NonZeroU8, NonZeroIsize, #[unstable(feature = "lossless_non_zero_int_conv", issue = "66196")] } -nzint_impl_from! { NonZeroU16, NonZeroI32, #[unstable(feature = "lossless_non_zero_int_conv", issue = "66196")] } -nzint_impl_from! { NonZeroU16, NonZeroI64, #[unstable(feature = "lossless_non_zero_int_conv", issue = "66196")] } -nzint_impl_from! { NonZeroU16, NonZeroI128, #[unstable(feature = "lossless_non_zero_int_conv", issue = "66196")] } -nzint_impl_from! { NonZeroU32, NonZeroI64, #[unstable(feature = "lossless_non_zero_int_conv", issue = "66196")] } -nzint_impl_from! { NonZeroU32, NonZeroI128, #[unstable(feature = "lossless_non_zero_int_conv", issue = "66196")] } -nzint_impl_from! { NonZeroU64, NonZeroI128, #[unstable(feature = "lossless_non_zero_int_conv", issue = "66196")] } +nzint_impl_from! { NonZeroU8, NonZeroI16, #[unstable(feature = "nz_int_conv", issue = "66196")] } +nzint_impl_from! { NonZeroU8, NonZeroI32, #[unstable(feature = "nz_int_conv", issue = "66196")] } +nzint_impl_from! { NonZeroU8, NonZeroI64, #[unstable(feature = "nz_int_conv", issue = "66196")] } +nzint_impl_from! { NonZeroU8, NonZeroI128, #[unstable(feature = "nz_int_conv", issue = "66196")] } +nzint_impl_from! { NonZeroU8, NonZeroIsize, #[unstable(feature = "nz_int_conv", issue = "66196")] } +nzint_impl_from! { NonZeroU16, NonZeroI32, #[unstable(feature = "nz_int_conv", issue = "66196")] } +nzint_impl_from! { NonZeroU16, NonZeroI64, #[unstable(feature = "nz_int_conv", issue = "66196")] } +nzint_impl_from! { NonZeroU16, NonZeroI128, #[unstable(feature = "nz_int_conv", issue = "66196")] } +nzint_impl_from! { NonZeroU32, NonZeroI64, #[unstable(feature = "nz_int_conv", issue = "66196")] } +nzint_impl_from! { NonZeroU32, NonZeroI128, #[unstable(feature = "nz_int_conv", issue = "66196")] } +nzint_impl_from! { NonZeroU64, NonZeroI128, #[unstable(feature = "nz_int_conv", issue = "66196")] } From 9f88273f3d9038d3de1c394961bafa161205554d Mon Sep 17 00:00:00 2001 From: Peter Date: Mon, 11 Nov 2019 11:57:02 +0000 Subject: [PATCH 3/4] add NonZeroU16 -> NonZeroUsize and NonZeroI16 -> NonZeroIsize --- src/libcore/num/mod.rs | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/libcore/num/mod.rs b/src/libcore/num/mod.rs index 3ad395e2fe09b..21a8655594a59 100644 --- a/src/libcore/num/mod.rs +++ b/src/libcore/num/mod.rs @@ -5287,6 +5287,7 @@ nzint_impl_from! { NonZeroU8, NonZeroUsize, #[unstable(feature = "nz_int_conv", nzint_impl_from! { NonZeroU16, NonZeroU32, #[unstable(feature = "nz_int_conv", issue = "66196")] } nzint_impl_from! { NonZeroU16, NonZeroU64, #[unstable(feature = "nz_int_conv", issue = "66196")] } nzint_impl_from! { NonZeroU16, NonZeroU128, #[unstable(feature = "nz_int_conv", issue = "66196")] } +nzint_impl_from! { NonZeroU16, NonZeroUsize, #[unstable(feature = "nz_int_conv", issue = "66196")] } nzint_impl_from! { NonZeroU32, NonZeroU64, #[unstable(feature = "nz_int_conv", issue = "66196")] } nzint_impl_from! { NonZeroU32, NonZeroU128, #[unstable(feature = "nz_int_conv", issue = "66196")] } nzint_impl_from! { NonZeroU64, NonZeroU128, #[unstable(feature = "nz_int_conv", issue = "66196")] } @@ -5300,6 +5301,7 @@ nzint_impl_from! { NonZeroI8, NonZeroIsize, #[unstable(feature = "nz_int_conv", nzint_impl_from! { NonZeroI16, NonZeroI32, #[unstable(feature = "nz_int_conv", issue = "66196")] } nzint_impl_from! { NonZeroI16, NonZeroI64, #[unstable(feature = "nz_int_conv", issue = "66196")] } nzint_impl_from! { NonZeroI16, NonZeroI128, #[unstable(feature = "nz_int_conv", issue = "66196")] } +nzint_impl_from! { NonZeroI16, NonZeroIsize, #[unstable(feature = "nz_int_conv", issue = "66196")] } nzint_impl_from! { NonZeroI32, NonZeroI64, #[unstable(feature = "nz_int_conv", issue = "66196")] } nzint_impl_from! { NonZeroI32, NonZeroI128, #[unstable(feature = "nz_int_conv", issue = "66196")] } nzint_impl_from! { NonZeroI64, NonZeroI128, #[unstable(feature = "nz_int_conv", issue = "66196")] } From 947772fc31b96ce90f57720f74571f14e35df66b Mon Sep 17 00:00:00 2001 From: Peter Date: Mon, 11 Nov 2019 12:28:37 +0000 Subject: [PATCH 4/4] update version metadata --- src/libcore/num/mod.rs | 70 +++++++++++++++++++++--------------------- 1 file changed, 35 insertions(+), 35 deletions(-) diff --git a/src/libcore/num/mod.rs b/src/libcore/num/mod.rs index 21a8655594a59..835ed762148c3 100644 --- a/src/libcore/num/mod.rs +++ b/src/libcore/num/mod.rs @@ -5279,42 +5279,42 @@ macro_rules! nzint_impl_from { } // Non-zero Unsigned -> Non-zero Unsigned -nzint_impl_from! { NonZeroU8, NonZeroU16, #[unstable(feature = "nz_int_conv", issue = "66196")] } -nzint_impl_from! { NonZeroU8, NonZeroU32, #[unstable(feature = "nz_int_conv", issue = "66196")] } -nzint_impl_from! { NonZeroU8, NonZeroU64, #[unstable(feature = "nz_int_conv", issue = "66196")] } -nzint_impl_from! { NonZeroU8, NonZeroU128, #[unstable(feature = "nz_int_conv", issue = "66196")] } -nzint_impl_from! { NonZeroU8, NonZeroUsize, #[unstable(feature = "nz_int_conv", issue = "66196")] } -nzint_impl_from! { NonZeroU16, NonZeroU32, #[unstable(feature = "nz_int_conv", issue = "66196")] } -nzint_impl_from! { NonZeroU16, NonZeroU64, #[unstable(feature = "nz_int_conv", issue = "66196")] } -nzint_impl_from! { NonZeroU16, NonZeroU128, #[unstable(feature = "nz_int_conv", issue = "66196")] } -nzint_impl_from! { NonZeroU16, NonZeroUsize, #[unstable(feature = "nz_int_conv", issue = "66196")] } -nzint_impl_from! { NonZeroU32, NonZeroU64, #[unstable(feature = "nz_int_conv", issue = "66196")] } -nzint_impl_from! { NonZeroU32, NonZeroU128, #[unstable(feature = "nz_int_conv", issue = "66196")] } -nzint_impl_from! { NonZeroU64, NonZeroU128, #[unstable(feature = "nz_int_conv", issue = "66196")] } +nzint_impl_from! { NonZeroU8, NonZeroU16, #[stable(feature = "nz_int_conv", since = "1.41.0")] } +nzint_impl_from! { NonZeroU8, NonZeroU32, #[stable(feature = "nz_int_conv", since = "1.41.0")] } +nzint_impl_from! { NonZeroU8, NonZeroU64, #[stable(feature = "nz_int_conv", since = "1.41.0")] } +nzint_impl_from! { NonZeroU8, NonZeroU128, #[stable(feature = "nz_int_conv", since = "1.41.0")] } +nzint_impl_from! { NonZeroU8, NonZeroUsize, #[stable(feature = "nz_int_conv", since = "1.41.0")] } +nzint_impl_from! { NonZeroU16, NonZeroU32, #[stable(feature = "nz_int_conv", since = "1.41.0")] } +nzint_impl_from! { NonZeroU16, NonZeroU64, #[stable(feature = "nz_int_conv", since = "1.41.0")] } +nzint_impl_from! { NonZeroU16, NonZeroU128, #[stable(feature = "nz_int_conv", since = "1.41.0")] } +nzint_impl_from! { NonZeroU16, NonZeroUsize, #[stable(feature = "nz_int_conv", since = "1.41.0")] } +nzint_impl_from! { NonZeroU32, NonZeroU64, #[stable(feature = "nz_int_conv", since = "1.41.0")] } +nzint_impl_from! { NonZeroU32, NonZeroU128, #[stable(feature = "nz_int_conv", since = "1.41.0")] } +nzint_impl_from! { NonZeroU64, NonZeroU128, #[stable(feature = "nz_int_conv", since = "1.41.0")] } // Non-zero Signed -> Non-zero Signed -nzint_impl_from! { NonZeroI8, NonZeroI16, #[unstable(feature = "nz_int_conv", issue = "66196")] } -nzint_impl_from! { NonZeroI8, NonZeroI32, #[unstable(feature = "nz_int_conv", issue = "66196")] } -nzint_impl_from! { NonZeroI8, NonZeroI64, #[unstable(feature = "nz_int_conv", issue = "66196")] } -nzint_impl_from! { NonZeroI8, NonZeroI128, #[unstable(feature = "nz_int_conv", issue = "66196")] } -nzint_impl_from! { NonZeroI8, NonZeroIsize, #[unstable(feature = "nz_int_conv", issue = "66196")] } -nzint_impl_from! { NonZeroI16, NonZeroI32, #[unstable(feature = "nz_int_conv", issue = "66196")] } -nzint_impl_from! { NonZeroI16, NonZeroI64, #[unstable(feature = "nz_int_conv", issue = "66196")] } -nzint_impl_from! { NonZeroI16, NonZeroI128, #[unstable(feature = "nz_int_conv", issue = "66196")] } -nzint_impl_from! { NonZeroI16, NonZeroIsize, #[unstable(feature = "nz_int_conv", issue = "66196")] } -nzint_impl_from! { NonZeroI32, NonZeroI64, #[unstable(feature = "nz_int_conv", issue = "66196")] } -nzint_impl_from! { NonZeroI32, NonZeroI128, #[unstable(feature = "nz_int_conv", issue = "66196")] } -nzint_impl_from! { NonZeroI64, NonZeroI128, #[unstable(feature = "nz_int_conv", issue = "66196")] } +nzint_impl_from! { NonZeroI8, NonZeroI16, #[stable(feature = "nz_int_conv", since = "1.41.0")] } +nzint_impl_from! { NonZeroI8, NonZeroI32, #[stable(feature = "nz_int_conv", since = "1.41.0")] } +nzint_impl_from! { NonZeroI8, NonZeroI64, #[stable(feature = "nz_int_conv", since = "1.41.0")] } +nzint_impl_from! { NonZeroI8, NonZeroI128, #[stable(feature = "nz_int_conv", since = "1.41.0")] } +nzint_impl_from! { NonZeroI8, NonZeroIsize, #[stable(feature = "nz_int_conv", since = "1.41.0")] } +nzint_impl_from! { NonZeroI16, NonZeroI32, #[stable(feature = "nz_int_conv", since = "1.41.0")] } +nzint_impl_from! { NonZeroI16, NonZeroI64, #[stable(feature = "nz_int_conv", since = "1.41.0")] } +nzint_impl_from! { NonZeroI16, NonZeroI128, #[stable(feature = "nz_int_conv", since = "1.41.0")] } +nzint_impl_from! { NonZeroI16, NonZeroIsize, #[stable(feature = "nz_int_conv", since = "1.41.0")] } +nzint_impl_from! { NonZeroI32, NonZeroI64, #[stable(feature = "nz_int_conv", since = "1.41.0")] } +nzint_impl_from! { NonZeroI32, NonZeroI128, #[stable(feature = "nz_int_conv", since = "1.41.0")] } +nzint_impl_from! { NonZeroI64, NonZeroI128, #[stable(feature = "nz_int_conv", since = "1.41.0")] } // NonZero UnSigned -> Non-zero Signed -nzint_impl_from! { NonZeroU8, NonZeroI16, #[unstable(feature = "nz_int_conv", issue = "66196")] } -nzint_impl_from! { NonZeroU8, NonZeroI32, #[unstable(feature = "nz_int_conv", issue = "66196")] } -nzint_impl_from! { NonZeroU8, NonZeroI64, #[unstable(feature = "nz_int_conv", issue = "66196")] } -nzint_impl_from! { NonZeroU8, NonZeroI128, #[unstable(feature = "nz_int_conv", issue = "66196")] } -nzint_impl_from! { NonZeroU8, NonZeroIsize, #[unstable(feature = "nz_int_conv", issue = "66196")] } -nzint_impl_from! { NonZeroU16, NonZeroI32, #[unstable(feature = "nz_int_conv", issue = "66196")] } -nzint_impl_from! { NonZeroU16, NonZeroI64, #[unstable(feature = "nz_int_conv", issue = "66196")] } -nzint_impl_from! { NonZeroU16, NonZeroI128, #[unstable(feature = "nz_int_conv", issue = "66196")] } -nzint_impl_from! { NonZeroU32, NonZeroI64, #[unstable(feature = "nz_int_conv", issue = "66196")] } -nzint_impl_from! { NonZeroU32, NonZeroI128, #[unstable(feature = "nz_int_conv", issue = "66196")] } -nzint_impl_from! { NonZeroU64, NonZeroI128, #[unstable(feature = "nz_int_conv", issue = "66196")] } +nzint_impl_from! { NonZeroU8, NonZeroI16, #[stable(feature = "nz_int_conv", since = "1.41.0")] } +nzint_impl_from! { NonZeroU8, NonZeroI32, #[stable(feature = "nz_int_conv", since = "1.41.0")] } +nzint_impl_from! { NonZeroU8, NonZeroI64, #[stable(feature = "nz_int_conv", since = "1.41.0")] } +nzint_impl_from! { NonZeroU8, NonZeroI128, #[stable(feature = "nz_int_conv", since = "1.41.0")] } +nzint_impl_from! { NonZeroU8, NonZeroIsize, #[stable(feature = "nz_int_conv", since = "1.41.0")] } +nzint_impl_from! { NonZeroU16, NonZeroI32, #[stable(feature = "nz_int_conv", since = "1.41.0")] } +nzint_impl_from! { NonZeroU16, NonZeroI64, #[stable(feature = "nz_int_conv", since = "1.41.0")] } +nzint_impl_from! { NonZeroU16, NonZeroI128, #[stable(feature = "nz_int_conv", since = "1.41.0")] } +nzint_impl_from! { NonZeroU32, NonZeroI64, #[stable(feature = "nz_int_conv", since = "1.41.0")] } +nzint_impl_from! { NonZeroU32, NonZeroI128, #[stable(feature = "nz_int_conv", since = "1.41.0")] } +nzint_impl_from! { NonZeroU64, NonZeroI128, #[stable(feature = "nz_int_conv", since = "1.41.0")] }