Make integer methods non-const in stage0
This commit is contained in:
parent
1b9ab8939e
commit
8a27c19c92
1 changed files with 192 additions and 0 deletions
|
|
@ -267,11 +267,20 @@ $EndFeature, "
|
|||
```
|
||||
"),
|
||||
#[stable(feature = "rust1", since = "1.0.0")]
|
||||
#[cfg(not(stage0))]
|
||||
#[rustc_const_unstable(feature = "const_int_ops")]
|
||||
#[inline]
|
||||
pub const fn count_ones(self) -> u32 { (self as $UnsignedT).count_ones() }
|
||||
}
|
||||
|
||||
doc_comment! {
|
||||
concat!("Dummy docs. See !stage0 documentation"),
|
||||
#[stable(feature = "rust1", since = "1.0.0")]
|
||||
#[cfg(stage0)]
|
||||
#[inline]
|
||||
pub fn count_ones(self) -> u32 { (self as $UnsignedT).count_ones() }
|
||||
}
|
||||
|
||||
doc_comment! {
|
||||
concat!("Returns the number of zeros in the binary representation of `self`.
|
||||
|
||||
|
|
@ -283,6 +292,7 @@ Basic usage:
|
|||
", $Feature, "assert_eq!(", stringify!($SelfT), "::max_value().count_zeros(), 1);", $EndFeature, "
|
||||
```"),
|
||||
#[stable(feature = "rust1", since = "1.0.0")]
|
||||
#[cfg(not(stage0))]
|
||||
#[rustc_const_unstable(feature = "const_int_ops")]
|
||||
#[inline]
|
||||
pub const fn count_zeros(self) -> u32 {
|
||||
|
|
@ -290,6 +300,16 @@ Basic usage:
|
|||
}
|
||||
}
|
||||
|
||||
doc_comment! {
|
||||
concat!("Dummy docs. See !stage0 documentatio"),
|
||||
#[stable(feature = "rust1", since = "1.0.0")]
|
||||
#[cfg(stage0)]
|
||||
#[inline]
|
||||
pub fn count_zeros(self) -> u32 {
|
||||
(!self).count_ones()
|
||||
}
|
||||
}
|
||||
|
||||
doc_comment! {
|
||||
concat!("Returns the number of leading zeros in the binary representation of `self`.
|
||||
|
||||
|
|
@ -304,6 +324,7 @@ assert_eq!(n.leading_zeros(), 0);",
|
|||
$EndFeature, "
|
||||
```"),
|
||||
#[stable(feature = "rust1", since = "1.0.0")]
|
||||
#[cfg(not(stage0))]
|
||||
#[rustc_const_unstable(feature = "const_int_ops")]
|
||||
#[inline]
|
||||
pub const fn leading_zeros(self) -> u32 {
|
||||
|
|
@ -311,6 +332,16 @@ $EndFeature, "
|
|||
}
|
||||
}
|
||||
|
||||
doc_comment! {
|
||||
concat!("Dummy docs. See !stage0 documentation"),
|
||||
#[stable(feature = "rust1", since = "1.0.0")]
|
||||
#[cfg(stage0)]
|
||||
#[inline]
|
||||
pub fn leading_zeros(self) -> u32 {
|
||||
(self as $UnsignedT).leading_zeros()
|
||||
}
|
||||
}
|
||||
|
||||
doc_comment! {
|
||||
concat!("Returns the number of trailing zeros in the binary representation of `self`.
|
||||
|
||||
|
|
@ -325,6 +356,7 @@ assert_eq!(n.trailing_zeros(), 2);",
|
|||
$EndFeature, "
|
||||
```"),
|
||||
#[stable(feature = "rust1", since = "1.0.0")]
|
||||
#[cfg(not(stage0))]
|
||||
#[rustc_const_unstable(feature = "const_int_ops")]
|
||||
#[inline]
|
||||
pub const fn trailing_zeros(self) -> u32 {
|
||||
|
|
@ -332,6 +364,16 @@ $EndFeature, "
|
|||
}
|
||||
}
|
||||
|
||||
doc_comment! {
|
||||
concat!("Dummy docs. See !stage0 documentation"),
|
||||
#[stable(feature = "rust1", since = "1.0.0")]
|
||||
#[cfg(stage0)]
|
||||
#[inline]
|
||||
pub fn trailing_zeros(self) -> u32 {
|
||||
(self as $UnsignedT).trailing_zeros()
|
||||
}
|
||||
}
|
||||
|
||||
/// Shifts the bits to the left by a specified amount, `n`,
|
||||
/// wrapping the truncated bits to the end of the resulting integer.
|
||||
///
|
||||
|
|
@ -400,12 +442,21 @@ $EndFeature, "
|
|||
/// assert_eq!(m, 21760);
|
||||
/// ```
|
||||
#[stable(feature = "rust1", since = "1.0.0")]
|
||||
#[cfg(not(stage0))]
|
||||
#[rustc_const_unstable(feature = "const_int_ops")]
|
||||
#[inline]
|
||||
pub const fn swap_bytes(self) -> Self {
|
||||
(self as $UnsignedT).swap_bytes() as Self
|
||||
}
|
||||
|
||||
/// Dummy docs. See !stage0 documentation.
|
||||
#[stable(feature = "rust1", since = "1.0.0")]
|
||||
#[cfg(stage0)]
|
||||
#[inline]
|
||||
pub fn swap_bytes(self) -> Self {
|
||||
(self as $UnsignedT).swap_bytes() as Self
|
||||
}
|
||||
|
||||
/// Reverses the bit pattern of the integer.
|
||||
///
|
||||
/// # Examples
|
||||
|
|
@ -452,6 +503,7 @@ if cfg!(target_endian = \"big\") {
|
|||
$EndFeature, "
|
||||
```"),
|
||||
#[stable(feature = "rust1", since = "1.0.0")]
|
||||
#[cfg(not(stage0))]
|
||||
#[rustc_const_unstable(feature = "const_int_ops")]
|
||||
#[inline]
|
||||
pub const fn from_be(x: Self) -> Self {
|
||||
|
|
@ -466,6 +518,16 @@ $EndFeature, "
|
|||
}
|
||||
}
|
||||
|
||||
doc_comment! {
|
||||
concat!("Dummy docs. See !stage0 documentation"),
|
||||
#[stable(feature = "rust1", since = "1.0.0")]
|
||||
#[cfg(stage0)]
|
||||
#[inline]
|
||||
pub fn from_be(x: Self) -> Self {
|
||||
if cfg!(target_endian = "big") { x } else { x.swap_bytes() }
|
||||
}
|
||||
}
|
||||
|
||||
doc_comment! {
|
||||
concat!("Converts an integer from little endian to the target's endianness.
|
||||
|
||||
|
|
@ -486,6 +548,7 @@ if cfg!(target_endian = \"little\") {
|
|||
$EndFeature, "
|
||||
```"),
|
||||
#[stable(feature = "rust1", since = "1.0.0")]
|
||||
#[cfg(not(stage0))]
|
||||
#[rustc_const_unstable(feature = "const_int_ops")]
|
||||
#[inline]
|
||||
pub const fn from_le(x: Self) -> Self {
|
||||
|
|
@ -500,6 +563,16 @@ $EndFeature, "
|
|||
}
|
||||
}
|
||||
|
||||
doc_comment! {
|
||||
concat!("Dummy docs. See !stage0 documentation"),
|
||||
#[stable(feature = "rust1", since = "1.0.0")]
|
||||
#[cfg(stage0)]
|
||||
#[inline]
|
||||
pub fn from_le(x: Self) -> Self {
|
||||
if cfg!(target_endian = "little") { x } else { x.swap_bytes() }
|
||||
}
|
||||
}
|
||||
|
||||
doc_comment! {
|
||||
concat!("Converts `self` to big endian from the target's endianness.
|
||||
|
||||
|
|
@ -520,6 +593,7 @@ if cfg!(target_endian = \"big\") {
|
|||
$EndFeature, "
|
||||
```"),
|
||||
#[stable(feature = "rust1", since = "1.0.0")]
|
||||
#[cfg(not(stage0))]
|
||||
#[rustc_const_unstable(feature = "const_int_ops")]
|
||||
#[inline]
|
||||
pub const fn to_be(self) -> Self { // or not to be?
|
||||
|
|
@ -534,6 +608,16 @@ $EndFeature, "
|
|||
}
|
||||
}
|
||||
|
||||
doc_comment! {
|
||||
concat!("Dummy docs. See !stage0 documentation"),
|
||||
#[stable(feature = "rust1", since = "1.0.0")]
|
||||
#[cfg(stage0)]
|
||||
#[inline]
|
||||
pub fn to_be(self) -> Self { // or not to be?
|
||||
if cfg!(target_endian = "big") { self } else { self.swap_bytes() }
|
||||
}
|
||||
}
|
||||
|
||||
doc_comment! {
|
||||
concat!("Converts `self` to little endian from the target's endianness.
|
||||
|
||||
|
|
@ -554,6 +638,7 @@ if cfg!(target_endian = \"little\") {
|
|||
$EndFeature, "
|
||||
```"),
|
||||
#[stable(feature = "rust1", since = "1.0.0")]
|
||||
#[cfg(not(stage0))]
|
||||
#[rustc_const_unstable(feature = "const_int_ops")]
|
||||
#[inline]
|
||||
pub const fn to_le(self) -> Self {
|
||||
|
|
@ -568,6 +653,16 @@ $EndFeature, "
|
|||
}
|
||||
}
|
||||
|
||||
doc_comment! {
|
||||
concat!("Dummy docs. See !stage0 documentation"),
|
||||
#[stable(feature = "rust1", since = "1.0.0")]
|
||||
#[cfg(stage0)]
|
||||
#[inline]
|
||||
pub fn to_le(self) -> Self {
|
||||
if cfg!(target_endian = "little") { self } else { self.swap_bytes() }
|
||||
}
|
||||
}
|
||||
|
||||
doc_comment! {
|
||||
concat!("Checked integer addition. Computes `self + rhs`, returning `None`
|
||||
if overflow occurred.
|
||||
|
|
@ -2070,6 +2165,7 @@ Basic usage:
|
|||
assert_eq!(n.count_ones(), 3);", $EndFeature, "
|
||||
```"),
|
||||
#[stable(feature = "rust1", since = "1.0.0")]
|
||||
#[cfg(not(stage0))]
|
||||
#[rustc_const_unstable(feature = "const_int_ops")]
|
||||
#[inline]
|
||||
pub const fn count_ones(self) -> u32 {
|
||||
|
|
@ -2077,6 +2173,16 @@ assert_eq!(n.count_ones(), 3);", $EndFeature, "
|
|||
}
|
||||
}
|
||||
|
||||
doc_comment! {
|
||||
concat!("Dummy docs. See !stage0 documentation"),
|
||||
#[stable(feature = "rust1", since = "1.0.0")]
|
||||
#[cfg(stage0)]
|
||||
#[inline]
|
||||
pub fn count_ones(self) -> u32 {
|
||||
unsafe { intrinsics::ctpop(self as $ActualT) as u32 }
|
||||
}
|
||||
}
|
||||
|
||||
doc_comment! {
|
||||
concat!("Returns the number of zeros in the binary representation of `self`.
|
||||
|
||||
|
|
@ -2088,6 +2194,7 @@ Basic usage:
|
|||
", $Feature, "assert_eq!(", stringify!($SelfT), "::max_value().count_zeros(), 0);", $EndFeature, "
|
||||
```"),
|
||||
#[stable(feature = "rust1", since = "1.0.0")]
|
||||
#[cfg(not(stage0))]
|
||||
#[rustc_const_unstable(feature = "const_int_ops")]
|
||||
#[inline]
|
||||
pub const fn count_zeros(self) -> u32 {
|
||||
|
|
@ -2095,6 +2202,16 @@ Basic usage:
|
|||
}
|
||||
}
|
||||
|
||||
doc_comment! {
|
||||
concat!("Dummy docs. See !stage0 documentation"),
|
||||
#[stable(feature = "rust1", since = "1.0.0")]
|
||||
#[cfg(stage0)]
|
||||
#[inline]
|
||||
pub fn count_zeros(self) -> u32 {
|
||||
(!self).count_ones()
|
||||
}
|
||||
}
|
||||
|
||||
doc_comment! {
|
||||
concat!("Returns the number of leading zeros in the binary representation of `self`.
|
||||
|
||||
|
|
@ -2108,6 +2225,7 @@ Basic usage:
|
|||
assert_eq!(n.leading_zeros(), 2);", $EndFeature, "
|
||||
```"),
|
||||
#[stable(feature = "rust1", since = "1.0.0")]
|
||||
#[cfg(not(stage0))]
|
||||
#[rustc_const_unstable(feature = "const_int_ops")]
|
||||
#[inline]
|
||||
pub const fn leading_zeros(self) -> u32 {
|
||||
|
|
@ -2115,6 +2233,16 @@ assert_eq!(n.leading_zeros(), 2);", $EndFeature, "
|
|||
}
|
||||
}
|
||||
|
||||
doc_comment! {
|
||||
concat!("Dummy docs. See !stage0 documentation"),
|
||||
#[stable(feature = "rust1", since = "1.0.0")]
|
||||
#[cfg(stage0)]
|
||||
#[inline]
|
||||
pub fn leading_zeros(self) -> u32 {
|
||||
unsafe { intrinsics::ctlz(self as $ActualT) as u32 }
|
||||
}
|
||||
}
|
||||
|
||||
doc_comment! {
|
||||
concat!("Returns the number of trailing zeros in the binary representation
|
||||
of `self`.
|
||||
|
|
@ -2129,6 +2257,7 @@ Basic usage:
|
|||
assert_eq!(n.trailing_zeros(), 3);", $EndFeature, "
|
||||
```"),
|
||||
#[stable(feature = "rust1", since = "1.0.0")]
|
||||
#[cfg(not(stage0))]
|
||||
#[rustc_const_unstable(feature = "const_int_ops")]
|
||||
#[inline]
|
||||
pub const fn trailing_zeros(self) -> u32 {
|
||||
|
|
@ -2136,6 +2265,16 @@ assert_eq!(n.trailing_zeros(), 3);", $EndFeature, "
|
|||
}
|
||||
}
|
||||
|
||||
doc_comment! {
|
||||
concat!("Dummy docs. See !stage0 documentation"),
|
||||
#[stable(feature = "rust1", since = "1.0.0")]
|
||||
#[cfg(stage0)]
|
||||
#[inline]
|
||||
pub fn trailing_zeros(self) -> u32 {
|
||||
unsafe { uint_cttz_call!(self, $BITS) as u32 }
|
||||
}
|
||||
}
|
||||
|
||||
/// Shifts the bits to the left by a specified amount, `n`,
|
||||
/// wrapping the truncated bits to the end of the resulting integer.
|
||||
///
|
||||
|
|
@ -2208,12 +2347,21 @@ assert_eq!(n.trailing_zeros(), 3);", $EndFeature, "
|
|||
/// assert_eq!(m, 21760);
|
||||
/// ```
|
||||
#[stable(feature = "rust1", since = "1.0.0")]
|
||||
#[cfg(not(stage0))]
|
||||
#[rustc_const_unstable(feature = "const_int_ops")]
|
||||
#[inline]
|
||||
pub const fn swap_bytes(self) -> Self {
|
||||
unsafe { intrinsics::bswap(self as $ActualT) as Self }
|
||||
}
|
||||
|
||||
/// Dummy docs. See !stage0 documentation.
|
||||
#[stable(feature = "rust1", since = "1.0.0")]
|
||||
#[cfg(stage0)]
|
||||
#[inline]
|
||||
pub fn swap_bytes(self) -> Self {
|
||||
unsafe { intrinsics::bswap(self as $ActualT) as Self }
|
||||
}
|
||||
|
||||
/// Reverses the bit pattern of the integer.
|
||||
///
|
||||
/// # Examples
|
||||
|
|
@ -2260,6 +2408,7 @@ if cfg!(target_endian = \"big\") {
|
|||
}", $EndFeature, "
|
||||
```"),
|
||||
#[stable(feature = "rust1", since = "1.0.0")]
|
||||
#[cfg(not(stage0))]
|
||||
#[rustc_const_unstable(feature = "const_int_ops")]
|
||||
#[inline]
|
||||
pub const fn from_be(x: Self) -> Self {
|
||||
|
|
@ -2274,6 +2423,16 @@ if cfg!(target_endian = \"big\") {
|
|||
}
|
||||
}
|
||||
|
||||
doc_comment! {
|
||||
concat!("Dummy docs. See !stage0 documentation"),
|
||||
#[stable(feature = "rust1", since = "1.0.0")]
|
||||
#[cfg(stage0)]
|
||||
#[inline]
|
||||
pub fn from_be(x: Self) -> Self {
|
||||
if cfg!(target_endian = "big") { x } else { x.swap_bytes() }
|
||||
}
|
||||
}
|
||||
|
||||
doc_comment! {
|
||||
concat!("Converts an integer from little endian to the target's endianness.
|
||||
|
||||
|
|
@ -2294,6 +2453,7 @@ if cfg!(target_endian = \"little\") {
|
|||
}", $EndFeature, "
|
||||
```"),
|
||||
#[stable(feature = "rust1", since = "1.0.0")]
|
||||
#[cfg(not(stage0))]
|
||||
#[rustc_const_unstable(feature = "const_int_ops")]
|
||||
#[inline]
|
||||
pub const fn from_le(x: Self) -> Self {
|
||||
|
|
@ -2308,6 +2468,16 @@ if cfg!(target_endian = \"little\") {
|
|||
}
|
||||
}
|
||||
|
||||
doc_comment! {
|
||||
concat!("Dummy docs. See !stage0 documentation"),
|
||||
#[stable(feature = "rust1", since = "1.0.0")]
|
||||
#[cfg(stage0)]
|
||||
#[inline]
|
||||
pub fn from_le(x: Self) -> Self {
|
||||
if cfg!(target_endian = "little") { x } else { x.swap_bytes() }
|
||||
}
|
||||
}
|
||||
|
||||
doc_comment! {
|
||||
concat!("Converts `self` to big endian from the target's endianness.
|
||||
|
||||
|
|
@ -2328,6 +2498,7 @@ if cfg!(target_endian = \"big\") {
|
|||
}", $EndFeature, "
|
||||
```"),
|
||||
#[stable(feature = "rust1", since = "1.0.0")]
|
||||
#[cfg(not(stage0))]
|
||||
#[rustc_const_unstable(feature = "const_int_ops")]
|
||||
#[inline]
|
||||
pub const fn to_be(self) -> Self { // or not to be?
|
||||
|
|
@ -2342,6 +2513,16 @@ if cfg!(target_endian = \"big\") {
|
|||
}
|
||||
}
|
||||
|
||||
doc_comment! {
|
||||
concat!("Dummy docs. See !stage0 documentation"),
|
||||
#[stable(feature = "rust1", since = "1.0.0")]
|
||||
#[cfg(stage0)]
|
||||
#[inline]
|
||||
pub fn to_be(self) -> Self { // or not to be?
|
||||
if cfg!(target_endian = "big") { self } else { self.swap_bytes() }
|
||||
}
|
||||
}
|
||||
|
||||
doc_comment! {
|
||||
concat!("Converts `self` to little endian from the target's endianness.
|
||||
|
||||
|
|
@ -2362,6 +2543,7 @@ if cfg!(target_endian = \"little\") {
|
|||
}", $EndFeature, "
|
||||
```"),
|
||||
#[stable(feature = "rust1", since = "1.0.0")]
|
||||
#[cfg(not(stage0))]
|
||||
#[rustc_const_unstable(feature = "const_int_ops")]
|
||||
#[inline]
|
||||
pub const fn to_le(self) -> Self {
|
||||
|
|
@ -2376,6 +2558,16 @@ if cfg!(target_endian = \"little\") {
|
|||
}
|
||||
}
|
||||
|
||||
doc_comment! {
|
||||
concat!("Dummy docs. See !stage0 documentation"),
|
||||
#[stable(feature = "rust1", since = "1.0.0")]
|
||||
#[cfg(stage0)]
|
||||
#[inline]
|
||||
pub fn to_le(self) -> Self {
|
||||
if cfg!(target_endian = "little") { self } else { self.swap_bytes() }
|
||||
}
|
||||
}
|
||||
|
||||
doc_comment! {
|
||||
concat!("Checked integer addition. Computes `self + rhs`, returning `None`
|
||||
if overflow occurred.
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue