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.
This commit is contained in:
Jacob Pratt 2025-03-30 17:59:27 -04:00 committed by GitHub
commit 4cfcafd500
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
3 changed files with 11 additions and 15 deletions

View file

@ -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!(

View file

@ -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)
);
}
}

View file

@ -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 {