From 481988b0832de4b28fd1f4a52f0df2801f62bda8 Mon Sep 17 00:00:00 2001 From: Lzu Tao Date: Fri, 10 Jul 2020 07:18:19 +0000 Subject: [PATCH] Use str::strip* in bootstrap This commit replaces the use of `trim_start_matches` because in `rustc -Vv` output there are no lines starting with multiple "release:". --- src/bootstrap/compile.rs | 9 +++++---- src/bootstrap/lib.rs | 11 +++++------ 2 files changed, 10 insertions(+), 10 deletions(-) diff --git a/src/bootstrap/compile.rs b/src/bootstrap/compile.rs index 84545dcedb6d9..9b4926f28d4ed 100644 --- a/src/bootstrap/compile.rs +++ b/src/bootstrap/compile.rs @@ -963,10 +963,11 @@ pub fn run_cargo( .collect::>(); for (prefix, extension, expected_len) in toplevel { let candidates = contents.iter().filter(|&&(_, ref filename, ref meta)| { - filename.starts_with(&prefix[..]) - && filename[prefix.len()..].starts_with('-') - && filename.ends_with(&extension[..]) - && meta.len() == expected_len + meta.len() == expected_len + && filename + .strip_prefix(&prefix[..]) + .map(|s| s.starts_with('-') && s.ends_with(&extension[..])) + .unwrap_or(false) }); let max = candidates .max_by_key(|&&(_, _, ref metadata)| FileTime::from_last_modification_time(metadata)); diff --git a/src/bootstrap/lib.rs b/src/bootstrap/lib.rs index b973889448651..783a64c3581f9 100644 --- a/src/bootstrap/lib.rs +++ b/src/bootstrap/lib.rs @@ -436,10 +436,9 @@ impl Build { output(Command::new(&build.initial_rustc).arg("--version").arg("--verbose")); let local_release = local_version_verbose .lines() - .filter(|x| x.starts_with("release:")) + .filter_map(|x| x.strip_prefix("release:")) .next() .unwrap() - .trim_start_matches("release:") .trim(); let my_version = channel::CFG_RELEASE_NUM; if local_release.split('.').take(2).eq(my_version.split('.').take(2)) { @@ -1089,10 +1088,10 @@ impl Build { let toml_file_name = self.src.join(&format!("src/tools/{}/Cargo.toml", package)); let toml = t!(fs::read_to_string(&toml_file_name)); for line in toml.lines() { - let prefix = "version = \""; - let suffix = "\""; - if line.starts_with(prefix) && line.ends_with(suffix) { - return line[prefix.len()..line.len() - suffix.len()].to_string(); + if let Some(stripped) = + line.strip_prefix("version = \"").and_then(|s| s.strip_suffix("\"")) + { + return stripped.to_owned(); } }