pub struct VersionLite<'input> {
pub major: u64,
pub minor: u64,
pub patch: u64,
pub additional: Additional,
pub pre: PreRelease<'input>,
pub build: Build<'input>,
}Expand description
Represents a lenient semantic version number.
The version is bound to the lifetime of the input string.
Fields§
§major: u64The major version.
minor: u64The minor version.
patch: u64The patch version.
additional: Additionaladditional version numbers.
pre: PreRelease<'input>The pre-release metadata.
build: Build<'input>The build metadata.
Implementations§
Source§impl<'input> Version<'input>
impl<'input> Version<'input>
Sourcepub const fn empty() -> Version<'input>
pub const fn empty() -> Version<'input>
Constructs a new, empty version
§Examples
let version = Version::empty();
assert_eq!(version.to_string(), "0.0.0")Sourcepub const fn new(major: u64, minor: u64, patch: u64) -> Version<'input>
pub const fn new(major: u64, minor: u64, patch: u64) -> Version<'input>
Constructs a new version out of the three regular version components
§Examples
let version = Version::new(1, 2, 3);
assert_eq!(version.to_string(), "1.2.3")Sourcepub fn parse(input: &'input str) -> Result<Version<'input>, Error<'input>>
pub fn parse(input: &'input str) -> Result<Version<'input>, Error<'input>>
Parse a string slice into a Version.
This parser does not require semver-specification conformant input and is more lenient in what it allows.
For more information, see lenient_semver_parser.
§Examples
let version = Version::parse("v1.2.3.4.5+build.42");
assert!(version.is_ok());Sourcepub fn bump_major(&mut self)
pub fn bump_major(&mut self)
Bumps the major version.
Sets minor, patch, and additional numbers to 0, removes pre-release and build identifier.
§Examples
let mut version = Version::parse("1.2.3.4.5-pre+build").unwrap();
version.bump_major();
assert_eq!(version.to_string(), "2.0.0.0.0");Sourcepub fn bumped_major<'a>(&self) -> Version<'a>
pub fn bumped_major<'a>(&self) -> Version<'a>
Returns a new version with the major version bumped.
Sets minor, patch, and additional numbers to 0, removes pre-release and build identifier. The lifetime for the resulting version can differ from the lifetime of this version.
§Examples
let version = Version::parse("1.2.3.4.5-pre+build").unwrap();
assert_eq!(version.bumped_major().to_string(), "2.0.0.0.0");Sourcepub fn bump_minor(&mut self)
pub fn bump_minor(&mut self)
Bumps the minor version.
Sets patch and additional numbers to 0, removes pre-release and build identifier.
§Examples
let mut version = Version::parse("1.2.3.4.5-pre+build").unwrap();
version.bump_minor();
assert_eq!(version.to_string(), "1.3.0.0.0");Sourcepub fn bumped_minor<'a>(&self) -> Version<'a>
pub fn bumped_minor<'a>(&self) -> Version<'a>
Returns a new version with the minor version bumped.
Sets patch and additional numbers to 0, removes pre-release and build identifier. The lifetime for the resulting version can differ from the lifetime of this version.
§Examples
let version = Version::parse("1.2.3.4.5-pre+build").unwrap();
assert_eq!(version.bumped_minor().to_string(), "1.3.0.0.0");Sourcepub fn bump_patch(&mut self)
pub fn bump_patch(&mut self)
Bumps the patch version.
Sets any additional numbers to 0, removes pre-release and build identifier.
§Examples
let mut version = Version::parse("1.2.3.4.5-pre+build").unwrap();
version.bump_patch();
assert_eq!(version.to_string(), "1.2.4.0.0");Sourcepub fn bumped_patch<'a>(&self) -> Version<'a>
pub fn bumped_patch<'a>(&self) -> Version<'a>
Returns a new version with the patch version bumped.
Sets any additional numbers to 0, removes pre-release and build identifier. The lifetime for the resulting version can differ from the lifetime of this version.
§Examples
let version = Version::parse("1.2.3.4.5-pre+build").unwrap();
assert_eq!(version.bumped_patch().to_string(), "1.2.4.0.0");Sourcepub fn bump_additional(&mut self, index: usize)
pub fn bump_additional(&mut self, index: usize)
Bumps any additional version.
Sets any following additional numbers to 0, removes pre-release and build identifier. If there are not enough additional numbers, only the pre-release and build identifier is removed.
§Examples
let mut version = Version::parse("1.2.3.4.5-pre+build").unwrap();
version.bump_additional(0);
assert_eq!(version.to_string(), "1.2.3.5.0");
let mut version = Version::parse("1.2.3.4.5-pre+build").unwrap();
version.bump_additional(1);
assert_eq!(version.to_string(), "1.2.3.4.6");
let mut version = Version::parse("1.2.3.4.5-pre+build").unwrap();
version.bump_additional(2);
assert_eq!(version.to_string(), "1.2.3.4.5");Sourcepub fn bumped_additional<'a>(&self, index: usize) -> Version<'a>
pub fn bumped_additional<'a>(&self, index: usize) -> Version<'a>
Returns a new version with the minor version bumped.
Sets patch and additional numbers to 0, removes pre-release and build identifier. The lifetime for the resulting version can differ from the lifetime of this version.
§Examples
let version = Version::parse("1.2.3.4.5-pre+build").unwrap();
assert_eq!(version.bumped_additional(0).to_string(), "1.2.3.5.0");
assert_eq!(version.bumped_additional(1).to_string(), "1.2.3.4.6");
assert_eq!(version.bumped_additional(2).to_string(), "1.2.3.4.5");Sourcepub fn is_pre_release(&self) -> bool
pub fn is_pre_release(&self) -> bool
Returns true if this version has pre-release metadata, i.e. it represents a pre-release.
§Examples
let version = Version::parse("1").unwrap();
assert!(!version.is_pre_release());
let version = Version::parse("1-pre").unwrap();
assert!(version.is_pre_release());
let version = Version::parse("1+build").unwrap();
assert!(!version.is_pre_release());Sourcepub fn disassociate_metadata<'a>(
self,
) -> (Version<'a>, PreRelease<'input>, Build<'input>)
pub fn disassociate_metadata<'a>( self, ) -> (Version<'a>, PreRelease<'input>, Build<'input>)
Disassociate this Version by changing the lifetime to something new.
The returned is a copy of self without any metadata. Nothing in the new version references ’input, so we can change the lifetime to something else.
The existing identifiers for pre-release and build are returned as well, so that users can clone and re-add them.
§Examples
use lenient_semver_parser::VersionBuilder;
let input = String::from("1-pre+build");
let version = Version::parse(&input).unwrap();
// couldn't drop input here
// drop(input);
let (mut version, pre, build) = version.disassociate_metadata::<'static>();
assert_eq!(Some("pre"), *pre);
assert_eq!(Some("build"), *build);
// now we can drop the input
drop(input);
// We can use the new version after it has be disassociated from `input`.
assert_eq!("1.0.0", version.to_string());
// only static metadata references are allowed now (because we said 'static earlier)
version.add_pre_release("pre2");
version.add_build("build2");
assert_eq!("1.0.0-pre2+build2", version.to_string());