about summary refs log tree commit diff
diff options
context:
space:
mode:
authorEric Arellano <ericarellano@me.com>2020-12-07 14:24:05 -0700
committerEric Arellano <ericarellano@me.com>2020-12-07 14:24:05 -0700
commitd2de69da2e99d43e14a80219b835aaf513c2f0d9 (patch)
tree0602a307cb74daea1791c8b47df8aeb42ba84090
parent85e9ea015220cc74dc54873974ed7138ea22eced (diff)
downloadrust-d2de69da2e99d43e14a80219b835aaf513c2f0d9.tar.gz
rust-d2de69da2e99d43e14a80219b835aaf513c2f0d9.zip
Dogfood 'str_split_once()` in the std lib
-rw-r--r--library/std/src/lib.rs1
-rw-r--r--library/std/src/sys_common/net.rs4
-rw-r--r--library/test/src/lib.rs1
-rw-r--r--library/test/src/time.rs24
4 files changed, 12 insertions, 18 deletions
diff --git a/library/std/src/lib.rs b/library/std/src/lib.rs
index 6c240cb4c3e..aba47445563 100644
--- a/library/std/src/lib.rs
+++ b/library/std/src/lib.rs
@@ -312,6 +312,7 @@
 #![feature(stdsimd)]
 #![feature(stmt_expr_attributes)]
 #![feature(str_internals)]
+#![feature(str_split_once)]
 #![feature(test)]
 #![feature(thread_local)]
 #![feature(thread_local_internals)]
diff --git a/library/std/src/sys_common/net.rs b/library/std/src/sys_common/net.rs
index 48ba4ddfc0b..47d615142f2 100644
--- a/library/std/src/sys_common/net.rs
+++ b/library/std/src/sys_common/net.rs
@@ -177,9 +177,7 @@ impl TryFrom<&str> for LookupHost {
         }
 
         // split the string by ':' and convert the second part to u16
-        let mut parts_iter = s.rsplitn(2, ':');
-        let port_str = try_opt!(parts_iter.next(), "invalid socket address");
-        let host = try_opt!(parts_iter.next(), "invalid socket address");
+        let (port_str, host) = try_opt!(s.rsplit_once(':'), "invalid socket address");
         let port: u16 = try_opt!(port_str.parse().ok(), "invalid port value");
 
         (host, port).try_into()
diff --git a/library/test/src/lib.rs b/library/test/src/lib.rs
index 5c12a54eef1..656d9669e81 100644
--- a/library/test/src/lib.rs
+++ b/library/test/src/lib.rs
@@ -30,6 +30,7 @@
 #![feature(termination_trait_lib)]
 #![feature(test)]
 #![feature(total_cmp)]
+#![feature(str_split_once)]
 
 // Public reexports
 pub use self::bench::{black_box, Bencher};
diff --git a/library/test/src/time.rs b/library/test/src/time.rs
index 130792fa5d7..e0b6eadffa1 100644
--- a/library/test/src/time.rs
+++ b/library/test/src/time.rs
@@ -105,30 +105,24 @@ impl TimeThreshold {
     /// value.
     pub fn from_env_var(env_var_name: &str) -> Option<Self> {
         let durations_str = env::var(env_var_name).ok()?;
+        let (warn_str, critical_str) = durations_str.split_once(',').unwrap_or_else(|| {
+            panic!(
+                "Duration variable {} expected to have 2 numbers separated by comma, but got {}",
+                env_var_name, durations_str
+            )
+        });
 
-        // Split string into 2 substrings by comma and try to parse numbers.
-        let mut durations = durations_str.splitn(2, ',').map(|v| {
+        let parse_u64 = |v| {
             u64::from_str(v).unwrap_or_else(|_| {
                 panic!(
                     "Duration value in variable {} is expected to be a number, but got {}",
                     env_var_name, v
                 )
             })
-        });
-
-        // Callback to be called if the environment variable has unexpected structure.
-        let panic_on_incorrect_value = || {
-            panic!(
-                "Duration variable {} expected to have 2 numbers separated by comma, but got {}",
-                env_var_name, durations_str
-            );
         };
 
-        let (warn, critical) = (
-            durations.next().unwrap_or_else(panic_on_incorrect_value),
-            durations.next().unwrap_or_else(panic_on_incorrect_value),
-        );
-
+        let warn = parse_u64(warn_str);
+        let critical = parse_u64(critical_str);
         if warn > critical {
             panic!("Test execution warn time should be less or equal to the critical time");
         }