diff options
| author | Nikolai Vazquez <hello@nikolaivazquez.com> | 2022-03-12 08:00:45 -0500 |
|---|---|---|
| committer | Nikolai Vazquez <hello@nikolaivazquez.com> | 2022-03-12 08:00:45 -0500 |
| commit | 1d13de686706f48f9da30b5640dd16b357df2806 (patch) | |
| tree | cb665703342f61ec5a57a3e0e9d9fadae42dc1a6 | |
| parent | f8a29bd95e0427ea1a46412ee2bb48e92644edc9 (diff) | |
| download | rust-1d13de686706f48f9da30b5640dd16b357df2806.tar.gz rust-1d13de686706f48f9da30b5640dd16b357df2806.zip | |
Implement `BITS` constant for non-zero integers
| -rw-r--r-- | library/core/src/num/nonzero.rs | 38 |
1 files changed, 38 insertions, 0 deletions
diff --git a/library/core/src/num/nonzero.rs b/library/core/src/num/nonzero.rs index 5bdd78aa2de..05e53175873 100644 --- a/library/core/src/num/nonzero.rs +++ b/library/core/src/num/nonzero.rs @@ -1090,3 +1090,41 @@ nonzero_min_max_signed! { NonZeroI128(i128); NonZeroIsize(isize); } + +macro_rules! nonzero_bits { + ( $( $Ty: ident($Int: ty); )+ ) => { + $( + impl $Ty { + /// The size of this non-zero integer type in bits. + /// + #[doc = concat!("This value is equal to [`", stringify!($Int), "::BITS`].")] + /// + /// # Examples + /// + /// ``` + /// #![feature(nonzero_bits)] + #[doc = concat!("# use std::num::", stringify!($Ty), ";")] + /// + #[doc = concat!("assert_eq!(", stringify!($Ty), "::BITS, ", stringify!($Int), "::BITS);")] + /// ``` + #[unstable(feature = "nonzero_bits", issue = "94881")] + pub const BITS: u32 = <$Int>::BITS; + } + )+ + } +} + +nonzero_bits! { + NonZeroU8(u8); + NonZeroI8(i8); + NonZeroU16(u16); + NonZeroI16(i16); + NonZeroU32(u32); + NonZeroI32(i32); + NonZeroU64(u64); + NonZeroI64(i64); + NonZeroU128(u128); + NonZeroI128(i128); + NonZeroUsize(usize); + NonZeroIsize(isize); +} |
