Struct lenient_version::Version [−][src]
pub struct Version<'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: u64
The major version.
minor: u64
The minor version.
patch: u64
The patch version.
additional: Additional
additional version numbers.
pre: PreRelease<'input>
The pre-release metadata.
build: Build<'input>
The build metadata.
Implementations
Constructs a new, empty version
Examples
let version = Version::empty(); assert_eq!(version.to_string(), "0.0.0")
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")
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());
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");
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");
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");
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");
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");
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");
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");
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");
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());
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());
Trait Implementations
This method returns an ordering between self
and other
values if one exists. Read more
This method tests less than (for self
and other
) and is used by the <
operator. Read more
This method tests less than or equal to (for self
and other
) and is used by the <=
operator. Read more
This method tests greater than (for self
and other
) and is used by the >
operator. Read more
Auto Trait Implementations
impl<'input> RefUnwindSafe for Version<'input>
impl<'input> UnwindSafe for Version<'input>
Blanket Implementations
Mutably borrows from an owned value. Read more