Struct proto_core::Version
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§
§impl<'input> Version<'input>
impl<'input> Version<'input>
pub 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")
pub 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")
pub 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());
pub 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");
pub 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");
pub 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");
pub 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");
pub 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");
pub 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");
pub 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");
pub 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");
pub 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());
pub 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());
Trait Implementations§
§impl Ord for Version<'_>
impl Ord for Version<'_>
§impl PartialEq<Version<'_>> for Version<'_>
impl PartialEq<Version<'_>> for Version<'_>
§impl PartialOrd<Version<'_>> for Version<'_>
impl PartialOrd<Version<'_>> for Version<'_>
§fn partial_cmp(&self, other: &Version<'_>) -> Option<Ordering>
fn partial_cmp(&self, other: &Version<'_>) -> Option<Ordering>
1.0.0 · source§fn le(&self, other: &Rhs) -> bool
fn le(&self, other: &Rhs) -> bool
self
and other
) and is used by the <=
operator. Read more§impl<'input> VersionBuilder<'input> for Version<'input>
impl<'input> VersionBuilder<'input> for Version<'input>
§fn add_additional(&mut self, num: u64)
fn add_additional(&mut self, num: u64)
§fn add_pre_release(&mut self, pre_release: &'input str)
fn add_pre_release(&mut self, pre_release: &'input str)
impl Eq for Version<'_>
Auto Trait Implementations§
impl<'input> RefUnwindSafe for Version<'input>
impl<'input> Send for Version<'input>
impl<'input> Sync for Version<'input>
impl<'input> Unpin for Version<'input>
impl<'input> UnwindSafe for Version<'input>
Blanket Implementations§
source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere T: ?Sized,
source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
source§impl<Q, K> Equivalent<K> for Qwhere
Q: Eq + ?Sized,
K: Borrow<Q> + ?Sized,
impl<Q, K> Equivalent<K> for Qwhere Q: Eq + ?Sized, K: Borrow<Q> + ?Sized,
source§fn equivalent(&self, key: &K) -> bool
fn equivalent(&self, key: &K) -> bool
key
and return true
if they are equal.§impl<Q, K> Equivalent<K> for Qwhere
Q: Eq + ?Sized,
K: Borrow<Q> + ?Sized,
impl<Q, K> Equivalent<K> for Qwhere Q: Eq + ?Sized, K: Borrow<Q> + ?Sized,
§fn equivalent(&self, key: &K) -> bool
fn equivalent(&self, key: &K) -> bool
source§impl<T> Instrument for T
impl<T> Instrument for T
source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
§impl<D> OwoColorize for D
impl<D> OwoColorize for D
§fn fg<C>(&self) -> FgColorDisplay<'_, C, Self>where
C: Color,
fn fg<C>(&self) -> FgColorDisplay<'_, C, Self>where C: Color,
§fn bg<C>(&self) -> BgColorDisplay<'_, C, Self>where
C: Color,
fn bg<C>(&self) -> BgColorDisplay<'_, C, Self>where C: Color,
§fn on_yellow<'a>(&'a self) -> BgColorDisplay<'a, Yellow, Self>
fn on_yellow<'a>(&'a self) -> BgColorDisplay<'a, Yellow, Self>
§fn magenta<'a>(&'a self) -> FgColorDisplay<'a, Magenta, Self>
fn magenta<'a>(&'a self) -> FgColorDisplay<'a, Magenta, Self>
§fn on_magenta<'a>(&'a self) -> BgColorDisplay<'a, Magenta, Self>
fn on_magenta<'a>(&'a self) -> BgColorDisplay<'a, Magenta, Self>
§fn on_purple<'a>(&'a self) -> BgColorDisplay<'a, Magenta, Self>
fn on_purple<'a>(&'a self) -> BgColorDisplay<'a, Magenta, Self>
§fn default_color<'a>(&'a self) -> FgColorDisplay<'a, Default, Self>
fn default_color<'a>(&'a self) -> FgColorDisplay<'a, Default, Self>
§fn on_default_color<'a>(&'a self) -> BgColorDisplay<'a, Default, Self>
fn on_default_color<'a>(&'a self) -> BgColorDisplay<'a, Default, Self>
§fn bright_black<'a>(&'a self) -> FgColorDisplay<'a, BrightBlack, Self>
fn bright_black<'a>(&'a self) -> FgColorDisplay<'a, BrightBlack, Self>
§fn on_bright_black<'a>(&'a self) -> BgColorDisplay<'a, BrightBlack, Self>
fn on_bright_black<'a>(&'a self) -> BgColorDisplay<'a, BrightBlack, Self>
§fn bright_red<'a>(&'a self) -> FgColorDisplay<'a, BrightRed, Self>
fn bright_red<'a>(&'a self) -> FgColorDisplay<'a, BrightRed, Self>
§fn on_bright_red<'a>(&'a self) -> BgColorDisplay<'a, BrightRed, Self>
fn on_bright_red<'a>(&'a self) -> BgColorDisplay<'a, BrightRed, Self>
§fn bright_green<'a>(&'a self) -> FgColorDisplay<'a, BrightGreen, Self>
fn bright_green<'a>(&'a self) -> FgColorDisplay<'a, BrightGreen, Self>
§fn on_bright_green<'a>(&'a self) -> BgColorDisplay<'a, BrightGreen, Self>
fn on_bright_green<'a>(&'a self) -> BgColorDisplay<'a, BrightGreen, Self>
§fn bright_yellow<'a>(&'a self) -> FgColorDisplay<'a, BrightYellow, Self>
fn bright_yellow<'a>(&'a self) -> FgColorDisplay<'a, BrightYellow, Self>
§fn on_bright_yellow<'a>(&'a self) -> BgColorDisplay<'a, BrightYellow, Self>
fn on_bright_yellow<'a>(&'a self) -> BgColorDisplay<'a, BrightYellow, Self>
§fn bright_blue<'a>(&'a self) -> FgColorDisplay<'a, BrightBlue, Self>
fn bright_blue<'a>(&'a self) -> FgColorDisplay<'a, BrightBlue, Self>
§fn on_bright_blue<'a>(&'a self) -> BgColorDisplay<'a, BrightBlue, Self>
fn on_bright_blue<'a>(&'a self) -> BgColorDisplay<'a, BrightBlue, Self>
§fn bright_magenta<'a>(&'a self) -> FgColorDisplay<'a, BrightMagenta, Self>
fn bright_magenta<'a>(&'a self) -> FgColorDisplay<'a, BrightMagenta, Self>
§fn on_bright_magenta<'a>(&'a self) -> BgColorDisplay<'a, BrightMagenta, Self>
fn on_bright_magenta<'a>(&'a self) -> BgColorDisplay<'a, BrightMagenta, Self>
§fn bright_purple<'a>(&'a self) -> FgColorDisplay<'a, BrightMagenta, Self>
fn bright_purple<'a>(&'a self) -> FgColorDisplay<'a, BrightMagenta, Self>
§fn on_bright_purple<'a>(&'a self) -> BgColorDisplay<'a, BrightMagenta, Self>
fn on_bright_purple<'a>(&'a self) -> BgColorDisplay<'a, BrightMagenta, Self>
§fn bright_cyan<'a>(&'a self) -> FgColorDisplay<'a, BrightCyan, Self>
fn bright_cyan<'a>(&'a self) -> FgColorDisplay<'a, BrightCyan, Self>
§fn on_bright_cyan<'a>(&'a self) -> BgColorDisplay<'a, BrightCyan, Self>
fn on_bright_cyan<'a>(&'a self) -> BgColorDisplay<'a, BrightCyan, Self>
§fn bright_white<'a>(&'a self) -> FgColorDisplay<'a, BrightWhite, Self>
fn bright_white<'a>(&'a self) -> FgColorDisplay<'a, BrightWhite, Self>
§fn on_bright_white<'a>(&'a self) -> BgColorDisplay<'a, BrightWhite, Self>
fn on_bright_white<'a>(&'a self) -> BgColorDisplay<'a, BrightWhite, Self>
§fn blink_fast<'a>(&'a self) -> BlinkFastDisplay<'a, Self>
fn blink_fast<'a>(&'a self) -> BlinkFastDisplay<'a, Self>
§fn strikethrough<'a>(&'a self) -> StrikeThroughDisplay<'a, Self>
fn strikethrough<'a>(&'a self) -> StrikeThroughDisplay<'a, Self>
§fn color<Color>(&self, color: Color) -> FgDynColorDisplay<'_, Color, Self>where
Color: DynColor,
fn color<Color>(&self, color: Color) -> FgDynColorDisplay<'_, Color, Self>where Color: DynColor,
OwoColorize::fg
or
a color-specific method, such as OwoColorize::green
, Read more§fn on_color<Color>(&self, color: Color) -> BgDynColorDisplay<'_, Color, Self>where
Color: DynColor,
fn on_color<Color>(&self, color: Color) -> BgDynColorDisplay<'_, Color, Self>where Color: DynColor,
OwoColorize::bg
or
a color-specific method, such as OwoColorize::on_yellow
, Read more