Fix two const-hacks
This commit is contained in:
parent
17a19e684c
commit
4e438f7d6b
@ -213,11 +213,9 @@ pub const fn new(secs: u64, nanos: u32) -> Duration {
|
||||
// SAFETY: nanos < NANOS_PER_SEC, therefore nanos is within the valid range
|
||||
Duration { secs, nanos: unsafe { Nanoseconds(nanos) } }
|
||||
} else {
|
||||
// FIXME(const-hack): use `.expect` once that is possible.
|
||||
let secs = match secs.checked_add((nanos / NANOS_PER_SEC) as u64) {
|
||||
Some(secs) => secs,
|
||||
None => panic!("overflow in Duration::new"),
|
||||
};
|
||||
let secs = secs
|
||||
.checked_add((nanos / NANOS_PER_SEC) as u64)
|
||||
.expect("overflow in Duration::new");
|
||||
let nanos = nanos % NANOS_PER_SEC;
|
||||
// SAFETY: nanos % NANOS_PER_SEC < NANOS_PER_SEC, therefore nanos is within the valid range
|
||||
Duration { secs, nanos: unsafe { Nanoseconds(nanos) } }
|
||||
|
@ -18,17 +18,6 @@
|
||||
use crate::sys_common::wstr::WStrUnits;
|
||||
use crate::{fmt, io, iter, vec};
|
||||
|
||||
/// This is the const equivalent to `NonZero::new(n).unwrap()`
|
||||
///
|
||||
/// FIXME(const-hack): This can be removed once `Option::unwrap` is stably const.
|
||||
/// See the `const_option` feature (#67441).
|
||||
const fn non_zero_u16(n: u16) -> NonZero<u16> {
|
||||
match NonZero::new(n) {
|
||||
Some(n) => n,
|
||||
None => panic!("called `unwrap` on a `None` value"),
|
||||
}
|
||||
}
|
||||
|
||||
pub fn args() -> Args {
|
||||
// SAFETY: `GetCommandLineW` returns a pointer to a null terminated UTF-16
|
||||
// string so it's safe for `WStrUnits` to use.
|
||||
@ -66,10 +55,10 @@ fn parse_lp_cmd_line<'a, F: Fn() -> OsString>(
|
||||
lp_cmd_line: Option<WStrUnits<'a>>,
|
||||
exe_name: F,
|
||||
) -> Vec<OsString> {
|
||||
const BACKSLASH: NonZero<u16> = non_zero_u16(b'\\' as u16);
|
||||
const QUOTE: NonZero<u16> = non_zero_u16(b'"' as u16);
|
||||
const TAB: NonZero<u16> = non_zero_u16(b'\t' as u16);
|
||||
const SPACE: NonZero<u16> = non_zero_u16(b' ' as u16);
|
||||
const BACKSLASH: NonZero<u16> = NonZero::new(b'\\' as u16).unwrap();
|
||||
const QUOTE: NonZero<u16> = NonZero::new(b'"' as u16).unwrap();
|
||||
const TAB: NonZero<u16> = NonZero::new(b'\t' as u16).unwrap();
|
||||
const SPACE: NonZero<u16> = NonZero::new(b' ' as u16).unwrap();
|
||||
|
||||
let mut ret_val = Vec::new();
|
||||
// If the cmd line pointer is null or it points to an empty string then
|
||||
|
Loading…
Reference in New Issue
Block a user