Rollup merge of #53363 - llogiq:num-individual-nonzero-docs, r=steveklabnik
add individual docs to `core::num::NonZero*`
This commit is contained in:
commit
7896ac3e08
@ -34,22 +34,32 @@ macro_rules! impl_nonzero_fmt {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
macro_rules! doc_comment {
|
||||||
|
($x:expr, $($tt:tt)*) => {
|
||||||
|
#[doc = $x]
|
||||||
|
$($tt)*
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
macro_rules! nonzero_integers {
|
macro_rules! nonzero_integers {
|
||||||
( $( $Ty: ident($Int: ty); )+ ) => {
|
( $( $Ty: ident($Int: ty); )+ ) => {
|
||||||
$(
|
$(
|
||||||
/// An integer that is known not to equal zero.
|
doc_comment! {
|
||||||
///
|
concat!("An integer that is known not to equal zero.
|
||||||
/// This enables some memory layout optimization.
|
|
||||||
/// For example, `Option<NonZeroU32>` is the same size as `u32`:
|
This enables some memory layout optimization.
|
||||||
///
|
For example, `Option<", stringify!($Ty), ">` is the same size as `", stringify!($Int), "`:
|
||||||
/// ```rust
|
|
||||||
/// use std::mem::size_of;
|
```rust
|
||||||
/// assert_eq!(size_of::<Option<std::num::NonZeroU32>>(), size_of::<u32>());
|
use std::mem::size_of;
|
||||||
/// ```
|
assert_eq!(size_of::<Option<std::num::", stringify!($Ty), ">>(), size_of::<", stringify!($Int),
|
||||||
|
">());
|
||||||
|
```"),
|
||||||
#[stable(feature = "nonzero", since = "1.28.0")]
|
#[stable(feature = "nonzero", since = "1.28.0")]
|
||||||
#[derive(Copy, Clone, Eq, PartialEq, Ord, PartialOrd, Hash)]
|
#[derive(Copy, Clone, Eq, PartialEq, Ord, PartialOrd, Hash)]
|
||||||
#[repr(transparent)]
|
#[repr(transparent)]
|
||||||
pub struct $Ty(NonZero<$Int>);
|
pub struct $Ty(NonZero<$Int>);
|
||||||
|
}
|
||||||
|
|
||||||
impl $Ty {
|
impl $Ty {
|
||||||
/// Create a non-zero without checking the value.
|
/// Create a non-zero without checking the value.
|
||||||
@ -176,13 +186,6 @@ pub mod dec2flt;
|
|||||||
pub mod bignum;
|
pub mod bignum;
|
||||||
pub mod diy_float;
|
pub mod diy_float;
|
||||||
|
|
||||||
macro_rules! doc_comment {
|
|
||||||
($x:expr, $($tt:tt)*) => {
|
|
||||||
#[doc = $x]
|
|
||||||
$($tt)*
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
||||||
mod wrapping;
|
mod wrapping;
|
||||||
|
|
||||||
// `Int` + `SignedInt` implemented for signed integers
|
// `Int` + `SignedInt` implemented for signed integers
|
||||||
|
Loading…
Reference in New Issue
Block a user