diff options
| author | Jacob Pratt <jacob@jhpratt.dev> | 2025-03-30 17:59:27 -0400 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2025-03-30 17:59:27 -0400 |
| commit | 4cfcafd5009df84defcf0335ead1f855a4a94aee (patch) | |
| tree | e8d35ba0a6b766072ca2a417cb068a2746155cd8 | |
| parent | fedf10752b973d83f3f7c0f819b2659c21a634de (diff) | |
| parent | fbe5e555214c079d82985c40b44a3b992d695fab (diff) | |
| download | rust-4cfcafd5009df84defcf0335ead1f855a4a94aee.tar.gz rust-4cfcafd5009df84defcf0335ead1f855a4a94aee.zip | |
Rollup merge of #139044 - thaliaarchi:bootstrap-change-id-clone, r=onur-ozkan
bootstrap: Avoid cloning `change-id` list Inspired by [recent discussion](https://rust-lang.zulipchat.com/#narrow/channel/326414-t-infra.2Fbootstrap/topic/Collecting.20some.20Real.20Configs.20for.20testing/near/507845657) on the bootstrap `change-id` field, I took a look at the code and found this little optimization. It does not change behavior.
| -rw-r--r-- | src/bootstrap/src/bin/main.rs | 2 | ||||
| -rw-r--r-- | src/bootstrap/src/core/config/config.rs | 2 | ||||
| -rw-r--r-- | src/bootstrap/src/utils/change_tracker.rs | 22 |
3 files changed, 11 insertions, 15 deletions
diff --git a/src/bootstrap/src/bin/main.rs b/src/bootstrap/src/bin/main.rs index 7ec3140c038..cbfe00a757c 100644 --- a/src/bootstrap/src/bin/main.rs +++ b/src/bootstrap/src/bin/main.rs @@ -191,7 +191,7 @@ fn check_version(config: &Config) -> Option<String> { } msg.push_str("There have been changes to x.py since you last updated:\n"); - msg.push_str(&human_readable_changes(&changes)); + msg.push_str(&human_readable_changes(changes)); msg.push_str("NOTE: to silence this warning, "); msg.push_str(&format!( diff --git a/src/bootstrap/src/core/config/config.rs b/src/bootstrap/src/core/config/config.rs index bbb0fbfbb93..1712be7f947 100644 --- a/src/bootstrap/src/core/config/config.rs +++ b/src/bootstrap/src/core/config/config.rs @@ -1381,7 +1381,7 @@ impl Config { if !changes.is_empty() { println!( "WARNING: There have been changes to x.py since you last updated:\n{}", - crate::human_readable_changes(&changes) + crate::human_readable_changes(changes) ); } } diff --git a/src/bootstrap/src/utils/change_tracker.rs b/src/bootstrap/src/utils/change_tracker.rs index 5314141dd1b..244391739f3 100644 --- a/src/bootstrap/src/utils/change_tracker.rs +++ b/src/bootstrap/src/utils/change_tracker.rs @@ -35,29 +35,25 @@ impl Display for ChangeSeverity { } } -pub fn find_recent_config_change_ids(current_id: usize) -> Vec<ChangeInfo> { - if !CONFIG_CHANGE_HISTORY.iter().any(|config| config.change_id == current_id) { +pub fn find_recent_config_change_ids(current_id: usize) -> &'static [ChangeInfo] { + if let Some(index) = + CONFIG_CHANGE_HISTORY.iter().position(|config| config.change_id == current_id) + { + // Skip the current_id and IDs before it + &CONFIG_CHANGE_HISTORY[index + 1..] + } else { // If the current change-id is greater than the most recent one, return // an empty list (it may be due to switching from a recent branch to an // older one); otherwise, return the full list (assuming the user provided // the incorrect change-id by accident). if let Some(config) = CONFIG_CHANGE_HISTORY.iter().max_by_key(|config| config.change_id) { if current_id > config.change_id { - return Vec::new(); + return &[]; } } - return CONFIG_CHANGE_HISTORY.to_vec(); + CONFIG_CHANGE_HISTORY } - - let index = - CONFIG_CHANGE_HISTORY.iter().position(|config| config.change_id == current_id).unwrap(); - - CONFIG_CHANGE_HISTORY - .iter() - .skip(index + 1) // Skip the current_id and IDs before it - .cloned() - .collect() } pub fn human_readable_changes(changes: &[ChangeInfo]) -> String { |
