Skip to content

Commit

Permalink
Optimize and refactor version.rs
Browse files Browse the repository at this point in the history
  • Loading branch information
gngeorgiev committed Nov 21, 2021
1 parent 8919a7a commit 508b2c0
Showing 1 changed file with 21 additions and 13 deletions.
34 changes: 21 additions & 13 deletions src/version.rs
Original file line number Diff line number Diff line change
Expand Up @@ -85,10 +85,11 @@ impl<'p> Version {
/// Constructs a version from its already parsed parts, e.g. `Version::from_parts(1, 2, 3, None)`.
pub fn from_parts(major: i64, minor: i64, patch: i64, prerelease: Option<String>) -> Self {
let prerelease = match prerelease {
Some(pre) => {
let prereleases = pre.split('.').map(|s| s.to_owned()).collect();
Some(prereleases)
}
Some(pre) => pre
.split('.')
.map(|s| s.to_owned())
.collect::<Vec<String>>()
.into(),
None => None,
};

Expand Down Expand Up @@ -155,16 +156,23 @@ impl<'p> Version {

impl fmt::Display for Version {
fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
if self.is_empty() {
Ok(())
} else {
let mut fmt = format!("{}.{}.{}", self.major, self.minor, self.patch);
if let Some(ref prerelease) = self.prerelease {
fmt = format!("{}-{}", fmt, prerelease.join("."))
}

write!(f, "{}", fmt)
if !self.is_empty() {
let fmt = if let Some(ref prerelease) = self.prerelease {
format!(
"{}.{}.{}-{}",
self.major,
self.minor,
self.patch,
prerelease.join(".")
)
} else {
format!("{}.{}.{}", self.major, self.minor, self.patch)
};

write!(f, "{}", fmt)?;
}

Ok(())
}
}

Expand Down

0 comments on commit 508b2c0

Please sign in to comment.