@@ -445,3 +445,40 @@ nzint_impl_from! { NonZeroU16, NonZeroI128, #[stable(feature = "nz_int_conv", si
445445nzint_impl_from ! { NonZeroU32 , NonZeroI64 , #[ stable( feature = "nz_int_conv" , since = "1.41.0" ) ] }
446446nzint_impl_from ! { NonZeroU32 , NonZeroI128 , #[ stable( feature = "nz_int_conv" , since = "1.41.0" ) ] }
447447nzint_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