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