Use statics + clone instead of const until const can access statics

This commit is contained in:
Lukas Wirth 2024-07-14 12:19:19 +02:00
parent dd626e78c7
commit f2d51073d2
49 changed files with 389 additions and 362 deletions

View file

@ -415,13 +415,13 @@ fn select_best_path(
(Unstable, Stable) => return new_path,
_ => {}
}
const STD_CRATES: [Symbol; 3] = [sym::std, sym::core, sym::alloc];
let std_crates: [Symbol; 3] = [sym::std.clone(), sym::core.clone(), sym::alloc.clone()];
let choose = |new: (ModPath, _), old: (ModPath, _)| {
let (new_path, _) = &new;
let (old_path, _) = &old;
let new_has_prelude = new_path.segments().iter().any(|seg| *seg == sym::prelude);
let old_has_prelude = old_path.segments().iter().any(|seg| *seg == sym::prelude);
let new_has_prelude = new_path.segments().iter().any(|seg| *seg == sym::prelude.clone());
let old_has_prelude = old_path.segments().iter().any(|seg| *seg == sym::prelude.clone());
match (new_has_prelude, old_has_prelude, cfg.prefer_prelude) {
(true, false, true) | (false, true, false) => new,
(true, false, false) | (false, true, true) => old,
@ -443,19 +443,19 @@ fn select_best_path(
match (old_path.0.segments().first(), new_path.0.segments().first()) {
(Some(old), Some(new))
if STD_CRATES.contains(old.symbol()) && STD_CRATES.contains(new.symbol()) =>
if std_crates.contains(old.symbol()) && std_crates.contains(new.symbol()) =>
{
let rank = match cfg.prefer_no_std {
false => |name: &Name| match name {
name if *name == sym::core => 0,
name if *name == sym::alloc => 1,
name if *name == sym::std => 2,
name if *name == sym::core.clone() => 0,
name if *name == sym::alloc.clone() => 1,
name if *name == sym::std.clone() => 2,
_ => unreachable!(),
},
true => |name: &Name| match name {
name if *name == sym::core => 2,
name if *name == sym::alloc => 1,
name if *name == sym::std => 0,
name if *name == sym::core.clone() => 2,
name if *name == sym::alloc.clone() => 1,
name if *name == sym::std.clone() => 0,
_ => unreachable!(),
},
};