@@ -24,12 +24,12 @@ macro_rules! impl_nonzero_fmt {
24
24
25
25
macro_rules! nonzero_integer {
26
26
(
27
+ #[ $stability: meta]
28
+ #[ $const_new_unchecked_stability: meta]
27
29
Self = $Ty: ident,
28
30
Primitive = $signedness: ident $Int: ident,
29
31
$( UnsignedNonZero = $UnsignedNonZero: ident, ) ?
30
32
UnsignedPrimitive = $UnsignedPrimitive: ty,
31
- feature = $feature: literal,
32
- original_stabilization = $since: literal,
33
33
34
34
// Used in doc comments.
35
35
leading_zeros_test = $leading_zeros_test: expr,
@@ -64,7 +64,7 @@ macro_rules! nonzero_integer {
64
64
/// ```
65
65
///
66
66
/// [null pointer optimization]: crate::option#representation
67
- #[ stable ( feature = $feature , since = $since ) ]
67
+ #[ $stability ]
68
68
#[ derive( Copy , Clone , Eq , PartialEq , Ord , PartialOrd , Hash ) ]
69
69
#[ repr( transparent) ]
70
70
#[ rustc_layout_scalar_valid_range_start( 1 ) ]
@@ -79,8 +79,8 @@ macro_rules! nonzero_integer {
79
79
/// # Safety
80
80
///
81
81
/// The value must not be zero.
82
- #[ stable ( feature = $feature , since = $since ) ]
83
- #[ rustc_const_stable ( feature = $feature , since = $since ) ]
82
+ #[ $stability ]
83
+ #[ $const_new_unchecked_stability ]
84
84
#[ must_use]
85
85
#[ inline]
86
86
pub const unsafe fn new_unchecked( n: $Int) -> Self {
@@ -95,7 +95,7 @@ macro_rules! nonzero_integer {
95
95
}
96
96
97
97
/// Creates a non-zero if the given value is not zero.
98
- #[ stable ( feature = $feature , since = $since ) ]
98
+ #[ $stability ]
99
99
#[ rustc_const_stable( feature = "const_nonzero_int_methods" , since = "1.47.0" ) ]
100
100
#[ must_use]
101
101
#[ inline]
@@ -109,7 +109,7 @@ macro_rules! nonzero_integer {
109
109
}
110
110
111
111
/// Returns the value as a primitive type.
112
- #[ stable ( feature = $feature , since = $since ) ]
112
+ #[ $stability ]
113
113
#[ inline]
114
114
#[ rustc_const_stable( feature = "const_nonzero_get" , since = "1.34.0" ) ]
115
115
pub const fn get( self ) -> $Int {
@@ -447,8 +447,7 @@ macro_rules! nonzero_integer {
447
447
}
448
448
449
449
impl_nonzero_fmt! {
450
- #[ stable( feature = $feature, since = $since) ]
451
- ( Debug , Display , Binary , Octal , LowerHex , UpperHex ) for $Ty
450
+ #[ $stability] ( Debug , Display , Binary , Octal , LowerHex , UpperHex ) for $Ty
452
451
}
453
452
454
453
#[ stable( feature = "nonzero_parse" , since = "1.35.0" ) ]
@@ -464,6 +463,27 @@ macro_rules! nonzero_integer {
464
463
465
464
nonzero_integer_signedness_dependent_impls!( $Ty $signedness $Int) ;
466
465
} ;
466
+
467
+ ( Self = $Ty: ident, Primitive = unsigned $Int: ident, $( $rest: tt) * ) => {
468
+ nonzero_integer! {
469
+ #[ stable( feature = "nonzero" , since = "1.28.0" ) ]
470
+ #[ rustc_const_stable( feature = "nonzero" , since = "1.28.0" ) ]
471
+ Self = $Ty,
472
+ Primitive = unsigned $Int,
473
+ UnsignedPrimitive = $Int,
474
+ $( $rest) *
475
+ }
476
+ } ;
477
+
478
+ ( Self = $Ty: ident, Primitive = signed $Int: ident, $( $rest: tt) * ) => {
479
+ nonzero_integer! {
480
+ #[ stable( feature = "signed_nonzero" , since = "1.34.0" ) ]
481
+ #[ rustc_const_stable( feature = "signed_nonzero" , since = "1.34.0" ) ]
482
+ Self = $Ty,
483
+ Primitive = signed $Int,
484
+ $( $rest) *
485
+ }
486
+ } ;
467
487
}
468
488
469
489
macro_rules! nonzero_integer_signedness_dependent_impls {
@@ -1239,54 +1259,36 @@ macro_rules! sign_dependent_expr {
1239
1259
nonzero_integer ! {
1240
1260
Self = NonZeroU8 ,
1241
1261
Primitive = unsigned u8 ,
1242
- UnsignedPrimitive = u8 ,
1243
- feature = "nonzero" ,
1244
- original_stabilization = "1.28.0" ,
1245
1262
leading_zeros_test = u8 :: MAX ,
1246
1263
}
1247
1264
1248
1265
nonzero_integer ! {
1249
1266
Self = NonZeroU16 ,
1250
1267
Primitive = unsigned u16 ,
1251
- UnsignedPrimitive = u16 ,
1252
- feature = "nonzero" ,
1253
- original_stabilization = "1.28.0" ,
1254
1268
leading_zeros_test = u16 :: MAX ,
1255
1269
}
1256
1270
1257
1271
nonzero_integer ! {
1258
1272
Self = NonZeroU32 ,
1259
1273
Primitive = unsigned u32 ,
1260
- UnsignedPrimitive = u32 ,
1261
- feature = "nonzero" ,
1262
- original_stabilization = "1.28.0" ,
1263
1274
leading_zeros_test = u32 :: MAX ,
1264
1275
}
1265
1276
1266
1277
nonzero_integer ! {
1267
1278
Self = NonZeroU64 ,
1268
1279
Primitive = unsigned u64 ,
1269
- UnsignedPrimitive = u64 ,
1270
- feature = "nonzero" ,
1271
- original_stabilization = "1.28.0" ,
1272
1280
leading_zeros_test = u64 :: MAX ,
1273
1281
}
1274
1282
1275
1283
nonzero_integer ! {
1276
1284
Self = NonZeroU128 ,
1277
1285
Primitive = unsigned u128 ,
1278
- UnsignedPrimitive = u128 ,
1279
- feature = "nonzero" ,
1280
- original_stabilization = "1.28.0" ,
1281
1286
leading_zeros_test = u128 :: MAX ,
1282
1287
}
1283
1288
1284
1289
nonzero_integer ! {
1285
1290
Self = NonZeroUsize ,
1286
1291
Primitive = unsigned usize ,
1287
- UnsignedPrimitive = usize ,
1288
- feature = "nonzero" ,
1289
- original_stabilization = "1.28.0" ,
1290
1292
leading_zeros_test = usize :: MAX ,
1291
1293
}
1292
1294
@@ -1295,8 +1297,6 @@ nonzero_integer! {
1295
1297
Primitive = signed i8 ,
1296
1298
UnsignedNonZero = NonZeroU8 ,
1297
1299
UnsignedPrimitive = u8 ,
1298
- feature = "signed_nonzero" ,
1299
- original_stabilization = "1.34.0" ,
1300
1300
leading_zeros_test = -1i8 ,
1301
1301
}
1302
1302
@@ -1305,8 +1305,6 @@ nonzero_integer! {
1305
1305
Primitive = signed i16 ,
1306
1306
UnsignedNonZero = NonZeroU16 ,
1307
1307
UnsignedPrimitive = u16 ,
1308
- feature = "signed_nonzero" ,
1309
- original_stabilization = "1.34.0" ,
1310
1308
leading_zeros_test = -1i16 ,
1311
1309
}
1312
1310
@@ -1315,8 +1313,6 @@ nonzero_integer! {
1315
1313
Primitive = signed i32 ,
1316
1314
UnsignedNonZero = NonZeroU32 ,
1317
1315
UnsignedPrimitive = u32 ,
1318
- feature = "signed_nonzero" ,
1319
- original_stabilization = "1.34.0" ,
1320
1316
leading_zeros_test = -1i32 ,
1321
1317
}
1322
1318
@@ -1325,8 +1321,6 @@ nonzero_integer! {
1325
1321
Primitive = signed i64 ,
1326
1322
UnsignedNonZero = NonZeroU64 ,
1327
1323
UnsignedPrimitive = u64 ,
1328
- feature = "signed_nonzero" ,
1329
- original_stabilization = "1.34.0" ,
1330
1324
leading_zeros_test = -1i64 ,
1331
1325
}
1332
1326
@@ -1335,8 +1329,6 @@ nonzero_integer! {
1335
1329
Primitive = signed i128 ,
1336
1330
UnsignedNonZero = NonZeroU128 ,
1337
1331
UnsignedPrimitive = u128 ,
1338
- feature = "signed_nonzero" ,
1339
- original_stabilization = "1.34.0" ,
1340
1332
leading_zeros_test = -1i128 ,
1341
1333
}
1342
1334
@@ -1345,7 +1337,5 @@ nonzero_integer! {
1345
1337
Primitive = signed isize ,
1346
1338
UnsignedNonZero = NonZeroUsize ,
1347
1339
UnsignedPrimitive = usize ,
1348
- feature = "signed_nonzero" ,
1349
- original_stabilization = "1.34.0" ,
1350
1340
leading_zeros_test = -1isize ,
1351
1341
}
0 commit comments