Skip to content

Commit

Permalink
Rollup merge of #106633 - c410-f3r:stabilize-nonzero_bits, r=dtolnay
Browse files Browse the repository at this point in the history
Stabilize `nonzero_min_max`

## Overall

Stabilizes `nonzero_min_max` to allow the "infallible" construction of ordinary minimum and maximum `NonZero*` instances.

The feature is fairly straightforward and already matured for some time in stable toolchains.

```rust
let _ = NonZeroU8::MIN;
let _ = NonZeroI32::MAX;
```

## History

* On 2022-01-25, implementation was [created](rust-lang/rust#93293).

## Considerations

* This report is fruit of the inanition observed after two unsuccessful attempts at getting feedback.
* Other constant variants discussed at rust-lang/rust#89065 (comment) are orthogonal to this feature.

Fixes rust-lang/rust#89065
  • Loading branch information
matthiaskrgr authored Mar 11, 2023
2 parents 4d3e3b6 + 44afe76 commit 38dde33
Showing 1 changed file with 4 additions and 12 deletions.
16 changes: 4 additions & 12 deletions core/src/num/nonzero.rs
Original file line number Diff line number Diff line change
Expand Up @@ -1147,12 +1147,10 @@ macro_rules! nonzero_min_max_unsigned {
/// # Examples
///
/// ```
/// #![feature(nonzero_min_max)]
///
#[doc = concat!("# use std::num::", stringify!($Ty), ";")]
#[doc = concat!("assert_eq!(", stringify!($Ty), "::MIN.get(), 1", stringify!($Int), ");")]
/// ```
#[unstable(feature = "nonzero_min_max", issue = "89065")]
#[stable(feature = "nonzero_min_max", since = "CURRENT_RUSTC_VERSION")]
pub const MIN: Self = Self::new(1).unwrap();

/// The largest value that can be represented by this non-zero
Expand All @@ -1162,12 +1160,10 @@ macro_rules! nonzero_min_max_unsigned {
/// # Examples
///
/// ```
/// #![feature(nonzero_min_max)]
///
#[doc = concat!("# use std::num::", stringify!($Ty), ";")]
#[doc = concat!("assert_eq!(", stringify!($Ty), "::MAX.get(), ", stringify!($Int), "::MAX);")]
/// ```
#[unstable(feature = "nonzero_min_max", issue = "89065")]
#[stable(feature = "nonzero_min_max", since = "CURRENT_RUSTC_VERSION")]
pub const MAX: Self = Self::new(<$Int>::MAX).unwrap();
}
)+
Expand All @@ -1189,12 +1185,10 @@ macro_rules! nonzero_min_max_signed {
/// # Examples
///
/// ```
/// #![feature(nonzero_min_max)]
///
#[doc = concat!("# use std::num::", stringify!($Ty), ";")]
#[doc = concat!("assert_eq!(", stringify!($Ty), "::MIN.get(), ", stringify!($Int), "::MIN);")]
/// ```
#[unstable(feature = "nonzero_min_max", issue = "89065")]
#[stable(feature = "nonzero_min_max", since = "CURRENT_RUSTC_VERSION")]
pub const MIN: Self = Self::new(<$Int>::MIN).unwrap();

/// The largest value that can be represented by this non-zero
Expand All @@ -1208,12 +1202,10 @@ macro_rules! nonzero_min_max_signed {
/// # Examples
///
/// ```
/// #![feature(nonzero_min_max)]
///
#[doc = concat!("# use std::num::", stringify!($Ty), ";")]
#[doc = concat!("assert_eq!(", stringify!($Ty), "::MAX.get(), ", stringify!($Int), "::MAX);")]
/// ```
#[unstable(feature = "nonzero_min_max", issue = "89065")]
#[stable(feature = "nonzero_min_max", since = "CURRENT_RUSTC_VERSION")]
pub const MAX: Self = Self::new(<$Int>::MAX).unwrap();
}
)+
Expand Down

0 comments on commit 38dde33

Please sign in to comment.