Option::unwrap is now const (#20007)

Summary
--

I noticed while working on #20006 that we had a custom `unwrap` function
for `Option`. This has been const on stable since 1.83
([docs](https://doc.rust-lang.org/std/option/enum.Option.html#method.unwrap),
[release notes](https://blog.rust-lang.org/2024/11/28/Rust-1.83.0/)), so
I think it's safe to use now. I grepped a bit for related todos and
found this one for `AsciiCharSet` but no others.

Test Plan
--

Existing tests
This commit is contained in:
Brent Westbrook 2025-08-20 13:40:49 -04:00 committed by GitHub
parent ddd4bab67c
commit 1a38831d53
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
2 changed files with 4 additions and 18 deletions

View file

@ -562,11 +562,11 @@ pub struct OneIndexed(NonZeroUsize);
impl OneIndexed {
/// The largest value that can be represented by this integer type
pub const MAX: Self = unwrap(Self::new(usize::MAX));
pub const MAX: Self = Self::new(usize::MAX).unwrap();
// SAFETY: These constants are being initialized with non-zero values
/// The smallest value that can be represented by this integer type.
pub const MIN: Self = unwrap(Self::new(1));
pub const ONE: NonZeroUsize = unwrap(NonZeroUsize::new(1));
pub const MIN: Self = Self::new(1).unwrap();
pub const ONE: NonZeroUsize = NonZeroUsize::new(1).unwrap();
/// Creates a non-zero if the given value is not zero.
pub const fn new(value: usize) -> Option<Self> {
@ -636,15 +636,6 @@ impl fmt::Display for OneIndexed {
}
}
/// A const `Option::unwrap` without nightly features:
/// [Tracking issue](https://github.com/rust-lang/rust/issues/67441)
const fn unwrap<T: Copy>(option: Option<T>) -> T {
match option {
Some(value) => value,
None => panic!("unwrapping None"),
}
}
impl FromStr for OneIndexed {
type Err = ParseIntError;
fn from_str(s: &str) -> Result<Self, Self::Err> {