Skip to content

Commit cc58a41

Browse files
committed
Change key used in toolchain_sort
1 parent 4f26cf3 commit cc58a41

File tree

1 file changed

+11
-21
lines changed

1 file changed

+11
-21
lines changed

src/toolchain/names.rs

Lines changed: 11 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -309,36 +309,26 @@ impl Display for ToolchainName {
309309
}
310310

311311
pub(crate) fn toolchain_sort(v: &mut [ToolchainName]) {
312-
use semver::{BuildMetadata, Prerelease, Version};
312+
use semver::Version;
313313

314314
v.sort_by_key(|name| {
315-
let s: &str = &format!("{name}");
316-
let default_ver = Version {
317-
major: 0,
318-
minor: 0,
319-
patch: 0,
320-
pre: Prerelease::EMPTY,
321-
build: BuildMetadata::EMPTY,
322-
};
323-
315+
let s = name.to_string();
324316
if s.starts_with("stable") {
325-
let pre = Prerelease::new(&format!("pre.{}.{}", 0, s.replace('_', "-"))).unwrap();
326-
return Version { pre, ..default_ver };
317+
return (0, None, s);
327318
}
328319
if s.starts_with("beta") {
329-
let pre = Prerelease::new(&format!("pre.{}.{}", 1, s.replace('_', "-"))).unwrap();
330-
return Version { pre, ..default_ver };
320+
return (1, None, s);
331321
}
332322
if s.starts_with("nightly") {
333-
let pre = Prerelease::new(&format!("pre.{}.{}", 2, s.replace('_', "-"))).unwrap();
334-
return Version { pre, ..default_ver };
323+
return (2, None, s);
335324
}
336-
if let Ok(v) = Version::parse(&s.replace('_', "-")) {
337-
return v;
325+
if let Some((ver_str, suffix)) = s.split_once('-') {
326+
if let Ok(ver) = Version::parse(ver_str) {
327+
return (3, Some(ver), suffix.to_owned());
328+
}
338329
}
339-
let pre = Prerelease::new(&format!("pre.{}.{}", 3, s.replace('_', "-"))).unwrap();
340-
Version { pre, ..default_ver }
341-
});
330+
(4, None, s)
331+
})
342332
}
343333

344334
/// ResolvableLocalToolchainName is used to process values set in

0 commit comments

Comments
 (0)