[][src]Struct versions::SemVer

pub struct SemVer {
    pub major: u32,
    pub minor: u32,
    pub patch: u32,
    pub pre_rel: Option<Chunks>,
    pub meta: Option<Chunks>,
}

An ideal version number that conforms to Semantic Versioning.

This is a prescriptive scheme, meaning that it follows the SemVer standard.

Legal semvers are of the form: MAJOR.MINOR.PATCH-PREREL+META

  • Simple Sample: 1.2.3
  • Full Sample: 1.2.3-alpha.2+a1b2c3.1

Extra Rules

  1. Pre-release versions have lower precedence than normal versions.
  2. Build metadata does not affect version precedence.
  3. PREREL and META strings may only contain ASCII alphanumerics.

Examples

use versions::SemVer;

let orig = "1.2.3-r1+git";
let attempt = SemVer::new(orig).unwrap();

assert_eq!(orig, format!("{}", attempt));

Fields

major: u32minor: u32patch: u32pre_rel: Option<Chunks>

Some implies that the inner Vec of the Chunks is not empty.

meta: Option<Chunks>

Some implies that the inner Vec of the Chunks is not empty.

Implementations

impl SemVer[src]

pub fn new(s: &str) -> Option<SemVer>[src]

Parse a SemVer from some input.

pub fn to_version(&self) -> Version[src]

A lossless conversion from SemVer to Version.

Note: Unlike SemVer, Version expects its metadata before the prerelease. For instance:

use versions::SemVer;

let orig = "1.2.3-r1+git123";
let ver = SemVer::new(orig).unwrap().to_version();

assert_eq!("1.2.3+git123-r1", format!("{}", ver));

pub fn to_mess(&self) -> Mess[src]

A lossless conversion from SemVer to Mess.

use versions::SemVer;

let orig = "1.2.3-r1+git123";
let mess = SemVer::new(orig).unwrap().to_mess();

assert_eq!(orig, format!("{}", mess));

Trait Implementations

impl Clone for SemVer[src]

impl Debug for SemVer[src]

impl Display for SemVer[src]

impl Eq for SemVer[src]

impl Hash for SemVer[src]

impl Ord for SemVer[src]

Build metadata does not affect version precendence, and pre-release versions have lower precedence than normal versions.

impl PartialEq<SemVer> for SemVer[src]

Two SemVers are equal if all fields except metadata are equal.

impl PartialOrd<SemVer> for SemVer[src]

impl StructuralEq for SemVer[src]

Auto Trait Implementations

impl RefUnwindSafe for SemVer

impl Send for SemVer

impl Sync for SemVer

impl Unpin for SemVer

impl UnwindSafe for SemVer

Blanket Implementations

impl<T> Any for T where
    T: 'static + ?Sized
[src]

impl<T> Borrow<T> for T where
    T: ?Sized
[src]

impl<T> BorrowMut<T> for T where
    T: ?Sized
[src]

impl<T> From<T> for T[src]

impl<T, U> Into<U> for T where
    U: From<T>, 
[src]

impl<T> ToOwned for T where
    T: Clone
[src]

type Owned = T

The resulting type after obtaining ownership.

impl<T> ToString for T where
    T: Display + ?Sized
[src]

impl<T, U> TryFrom<U> for T where
    U: Into<T>, 
[src]

type Error = Infallible

The type returned in the event of a conversion error.

impl<T, U> TryInto<U> for T where
    U: TryFrom<T>, 
[src]

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.