diff --git a/src/libcore/num/mod.rs b/src/libcore/num/mod.rs index 37856dc5469..b93428c6321 100644 --- a/src/libcore/num/mod.rs +++ b/src/libcore/num/mod.rs @@ -34,22 +34,32 @@ macro_rules! impl_nonzero_fmt { } } +macro_rules! doc_comment { + ($x:expr, $($tt:tt)*) => { + #[doc = $x] + $($tt)* + }; +} + macro_rules! nonzero_integers { ( $( $Ty: ident($Int: ty); )+ ) => { $( - /// An integer that is known not to equal zero. - /// - /// This enables some memory layout optimization. - /// For example, `Option` is the same size as `u32`: - /// - /// ```rust - /// use std::mem::size_of; - /// assert_eq!(size_of::>(), size_of::()); - /// ``` - #[stable(feature = "nonzero", since = "1.28.0")] - #[derive(Copy, Clone, Eq, PartialEq, Ord, PartialOrd, Hash)] - #[repr(transparent)] - pub struct $Ty(NonZero<$Int>); + doc_comment! { + concat!("An integer that is known not to equal zero. + +This enables some memory layout optimization. +For example, `Option<", stringify!($Ty), ">` is the same size as `", stringify!($Int), "`: + +```rust +use std::mem::size_of; +assert_eq!(size_of::>(), size_of::<", stringify!($Int), +">()); +```"), + #[stable(feature = "nonzero", since = "1.28.0")] + #[derive(Copy, Clone, Eq, PartialEq, Ord, PartialOrd, Hash)] + #[repr(transparent)] + pub struct $Ty(NonZero<$Int>); + } impl $Ty { /// Create a non-zero without checking the value. @@ -176,13 +186,6 @@ pub mod dec2flt; pub mod bignum; pub mod diy_float; -macro_rules! doc_comment { - ($x:expr, $($tt:tt)*) => { - #[doc = $x] - $($tt)* - }; -} - mod wrapping; // `Int` + `SignedInt` implemented for signed integers