about summary refs log tree commit diff
diff options
context:
space:
mode:
authorChris Denton <christophersdenton@gmail.com>2022-06-28 11:37:48 +0100
committerChris Denton <christophersdenton@gmail.com>2022-06-28 11:37:48 +0100
commit2ee92419dd17606d6b50f44b413dcf7ef49ac116 (patch)
tree8f25db7966c71e25c63f7b15913fe5cb20d6ba6c
parent64eb9ab869bc3f9ef3645302fbf22e706eea16cf (diff)
downloadrust-2ee92419dd17606d6b50f44b413dcf7ef49ac116.tar.gz
rust-2ee92419dd17606d6b50f44b413dcf7ef49ac116.zip
Remove feature `const_option` from std
-rw-r--r--library/std/src/lib.rs1
-rw-r--r--library/std/src/sys/windows/args.rs16
2 files changed, 12 insertions, 5 deletions
diff --git a/library/std/src/lib.rs b/library/std/src/lib.rs
index 7da9f248c87..65b8df42996 100644
--- a/library/std/src/lib.rs
+++ b/library/std/src/lib.rs
@@ -335,7 +335,6 @@
 #![feature(const_ip)]
 #![feature(const_ipv4)]
 #![feature(const_ipv6)]
-#![feature(const_option)]
 #![feature(const_socketaddr)]
 #![feature(thread_local_internals)]
 //
diff --git a/library/std/src/sys/windows/args.rs b/library/std/src/sys/windows/args.rs
index c5918103fec..361cf0590a1 100644
--- a/library/std/src/sys/windows/args.rs
+++ b/library/std/src/sys/windows/args.rs
@@ -21,6 +21,14 @@ use crate::vec;
 
 use core::iter;
 
+/// This is the const equivalent to `NonZeroU16::new(n).unwrap()`
+const fn non_zero_u16(n: u16) -> NonZeroU16 {
+    match NonZeroU16::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.
@@ -58,10 +66,10 @@ fn parse_lp_cmd_line<'a, F: Fn() -> OsString>(
     lp_cmd_line: Option<WStrUnits<'a>>,
     exe_name: F,
 ) -> Vec<OsString> {
-    const BACKSLASH: NonZeroU16 = NonZeroU16::new(b'\\' as u16).unwrap();
-    const QUOTE: NonZeroU16 = NonZeroU16::new(b'"' as u16).unwrap();
-    const TAB: NonZeroU16 = NonZeroU16::new(b'\t' as u16).unwrap();
-    const SPACE: NonZeroU16 = NonZeroU16::new(b' ' as u16).unwrap();
+    const BACKSLASH: NonZeroU16 = non_zero_u16(b'\\' as u16);
+    const QUOTE: NonZeroU16 = non_zero_u16(b'"' as u16);
+    const TAB: NonZeroU16 = non_zero_u16(b'\t' as u16);
+    const SPACE: NonZeroU16 = non_zero_u16(b' ' as u16);
 
     let mut ret_val = Vec::new();
     // If the cmd line pointer is null or it points to an empty string then