about summary refs log tree commit diff
diff options
context:
space:
mode:
authorNikolai Vazquez <hello@nikolaivazquez.com>2022-03-12 08:00:45 -0500
committerNikolai Vazquez <hello@nikolaivazquez.com>2022-03-12 08:00:45 -0500
commit1d13de686706f48f9da30b5640dd16b357df2806 (patch)
treecb665703342f61ec5a57a3e0e9d9fadae42dc1a6
parentf8a29bd95e0427ea1a46412ee2bb48e92644edc9 (diff)
downloadrust-1d13de686706f48f9da30b5640dd16b357df2806.tar.gz
rust-1d13de686706f48f9da30b5640dd16b357df2806.zip
Implement `BITS` constant for non-zero integers
-rw-r--r--library/core/src/num/nonzero.rs38
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);
+}