mirror of
https://github.com/astral-sh/uv.git
synced 2025-07-07 21:35:00 +00:00
Optimize Version display (#13643)
We format enough versions that the `.collect::<Vec<String>>()` showed up in profiles.
This commit is contained in:
parent
7941d215e5
commit
a6f8fa7e42
2 changed files with 29 additions and 31 deletions
1
.gitignore
vendored
1
.gitignore
vendored
|
@ -31,6 +31,7 @@ flamegraph.svg
|
||||||
perf.data
|
perf.data
|
||||||
perf.data.old
|
perf.data.old
|
||||||
profile.json
|
profile.json
|
||||||
|
profile.json.gz
|
||||||
|
|
||||||
# MkDocs
|
# MkDocs
|
||||||
/site
|
/site
|
||||||
|
|
|
@ -762,41 +762,38 @@ impl Serialize for Version {
|
||||||
/// Shows normalized version
|
/// Shows normalized version
|
||||||
impl std::fmt::Display for Version {
|
impl std::fmt::Display for Version {
|
||||||
fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
|
fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
|
||||||
let epoch = if self.epoch() == 0 {
|
if self.epoch() != 0 {
|
||||||
String::new()
|
write!(f, "{}!", self.epoch())?;
|
||||||
} else {
|
}
|
||||||
format!("{}!", self.epoch())
|
let release = self.release();
|
||||||
};
|
let mut release_iter = release.iter();
|
||||||
let release = self
|
if let Some(first) = release_iter.next() {
|
||||||
.release()
|
write!(f, "{first}")?;
|
||||||
.iter()
|
for n in release_iter {
|
||||||
.map(ToString::to_string)
|
write!(f, ".{n}")?;
|
||||||
.collect::<Vec<String>>()
|
}
|
||||||
.join(".");
|
}
|
||||||
let pre = self
|
|
||||||
.pre()
|
if let Some(Prerelease { kind, number }) = self.pre() {
|
||||||
.as_ref()
|
write!(f, "{kind}{number}")?;
|
||||||
.map(|Prerelease { kind, number }| format!("{kind}{number}"))
|
}
|
||||||
.unwrap_or_default();
|
if let Some(post) = self.post() {
|
||||||
let post = self
|
write!(f, ".post{post}")?;
|
||||||
.post()
|
}
|
||||||
.map(|post| format!(".post{post}"))
|
if let Some(dev) = self.dev() {
|
||||||
.unwrap_or_default();
|
write!(f, ".dev{dev}")?;
|
||||||
let dev = self
|
}
|
||||||
.dev()
|
if !self.local().is_empty() {
|
||||||
.map(|dev| format!(".dev{dev}"))
|
|
||||||
.unwrap_or_default();
|
|
||||||
let local = if self.local().is_empty() {
|
|
||||||
String::new()
|
|
||||||
} else {
|
|
||||||
match self.local() {
|
match self.local() {
|
||||||
LocalVersionSlice::Segments(_) => {
|
LocalVersionSlice::Segments(_) => {
|
||||||
format!("+{}", self.local())
|
write!(f, "+{}", self.local())?;
|
||||||
|
}
|
||||||
|
LocalVersionSlice::Max => {
|
||||||
|
write!(f, "+")?;
|
||||||
}
|
}
|
||||||
LocalVersionSlice::Max => "+".to_string(),
|
|
||||||
}
|
}
|
||||||
};
|
}
|
||||||
write!(f, "{epoch}{release}{pre}{post}{dev}{local}")
|
Ok(())
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue