version_check

Struct Version

Source
pub struct Version(/* private fields */);
Expand description

Version number: major.minor.patch, ignoring release channel.

Implementations§

Source§

impl Version

Source

pub fn read() -> Option<Version>

Reads the version of the running compiler. If it cannot be determined (see the top-level documentation), returns None.

§Example
use version_check::Version;

match Version::read() {
    Some(d) => format!("Version is: {}", d),
    None => format!("Failed to read the version.")
};
Source

pub fn parse(version: &str) -> Option<Version>

Parse a Rust release version (of the form major[.minor[.patch[-channel]]]), ignoring the release channel, if any. Returns None if version is not a valid Rust version string.

§Example
use version_check::Version;

let version = Version::parse("1.18.0").unwrap();
assert!(version.exactly("1.18.0"));

let version = Version::parse("1.20.0-nightly").unwrap();
assert!(version.exactly("1.20.0"));
assert!(version.exactly("1.20.0-beta"));

let version = Version::parse("1.3").unwrap();
assert!(version.exactly("1.3.0"));

let version = Version::parse("1").unwrap();
assert!(version.exactly("1.0.0"));

assert!(Version::parse("one.two.three").is_none());
assert!(Version::parse("1.65536.2").is_none());
assert!(Version::parse("1. 2").is_none());
assert!(Version::parse("").is_none());
assert!(Version::parse("1.").is_none());
assert!(Version::parse("1.2.3.4").is_none());
Source

pub fn from_mmp(major: u16, minor: u16, patch: u16) -> Version

Creates a Version from (major, minor, patch) version components.

§Example
use version_check::Version;

assert!(Version::from_mmp(1, 35, 0).exactly("1.35.0"));
assert!(Version::from_mmp(1, 33, 0).exactly("1.33.0"));
assert!(Version::from_mmp(1, 35, 1).exactly("1.35.1"));
assert!(Version::from_mmp(1, 13, 2).exactly("1.13.2"));
Source

pub fn to_mmp(&self) -> (u16, u16, u16)

Returns the (major, minor, patch) version components of self.

§Example
use version_check::Version;

assert_eq!(Version::parse("1.35.0").unwrap().to_mmp(), (1, 35, 0));
assert_eq!(Version::parse("1.33.0").unwrap().to_mmp(), (1, 33, 0));
assert_eq!(Version::parse("1.35.1").unwrap().to_mmp(), (1, 35, 1));
assert_eq!(Version::parse("1.13.2").unwrap().to_mmp(), (1, 13, 2));
Source

pub fn at_least(&self, version: &str) -> bool

Returns true if self is greater than or equal to version.

If version is greater than self, or if version is not a valid Rust version string, returns false.

§Example
use version_check::Version;

let version = Version::parse("1.35.0").unwrap();

assert!(version.at_least("1.33.0"));
assert!(version.at_least("1.35.0"));
assert!(version.at_least("1.13.2"));

assert!(!version.at_least("1.35.1"));
assert!(!version.at_least("1.55.0"));

let version = Version::parse("1.12.5").unwrap();

assert!(version.at_least("1.12.0"));
assert!(!version.at_least("1.35.0"));
Source

pub fn at_most(&self, version: &str) -> bool

Returns true if self is less than or equal to version.

If version is less than self, or if version is not a valid Rust version string, returns false.

§Example
use version_check::Version;

let version = Version::parse("1.35.0").unwrap();

assert!(version.at_most("1.35.1"));
assert!(version.at_most("1.55.0"));
assert!(version.at_most("1.35.0"));

assert!(!version.at_most("1.33.0"));
assert!(!version.at_most("1.13.2"));
Source

pub fn exactly(&self, version: &str) -> bool

Returns true if self is exactly equal to version.

If version is not equal to self, or if version is not a valid Rust version string, returns false.

§Example
use version_check::Version;

let version = Version::parse("1.35.0").unwrap();

assert!(version.exactly("1.35.0"));

assert!(!version.exactly("1.33.0"));
assert!(!version.exactly("1.35.1"));
assert!(!version.exactly("1.13.2"));

Trait Implementations§

Source§

impl Clone for Version

Source§

fn clone(&self) -> Version

Returns a copy of the value. Read more
1.0.0 · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Debug for Version

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl Display for Version

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl Ord for Version

Source§

fn cmp(&self, other: &Version) -> Ordering

This method returns an Ordering between self and other. Read more
1.21.0 · Source§

fn max(self, other: Self) -> Self
where Self: Sized,

Compares and returns the maximum of two values. Read more
1.21.0 · Source§

fn min(self, other: Self) -> Self
where Self: Sized,

Compares and returns the minimum of two values. Read more
1.50.0 · Source§

fn clamp(self, min: Self, max: Self) -> Self
where Self: Sized,

Restrict a value to a certain interval. Read more
Source§

impl PartialEq for Version

Source§

fn eq(&self, other: &Version) -> bool

Tests for self and other values to be equal, and is used by ==.
1.0.0 · Source§

fn ne(&self, other: &Rhs) -> bool

Tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.
Source§

impl PartialOrd for Version

Source§

fn partial_cmp(&self, other: &Version) -> Option<Ordering>

This method returns an ordering between self and other values if one exists. Read more
1.0.0 · Source§

fn lt(&self, other: &Rhs) -> bool

Tests less than (for self and other) and is used by the < operator. Read more
1.0.0 · Source§

fn le(&self, other: &Rhs) -> bool

Tests less than or equal to (for self and other) and is used by the <= operator. Read more
1.0.0 · Source§

fn gt(&self, other: &Rhs) -> bool

Tests greater than (for self and other) and is used by the > operator. Read more
1.0.0 · Source§

fn ge(&self, other: &Rhs) -> bool

Tests greater than or equal to (for self and other) and is used by the >= operator. Read more
Source§

impl Copy for Version

Source§

impl Eq for Version

Source§

impl StructuralPartialEq for Version

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dst: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dst. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T> ToString for T
where T: Display + ?Sized,

Source§

fn to_string(&self) -> String

Converts the given value to a String. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

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

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.