Struct VersionReq

Source
pub struct VersionReq { /* private fields */ }
Expand description

A VersionReq is a struct containing a list of ranges that can apply to ranges of version numbers. Matching operations can then be done with the VersionReq against a particular version to see if it satisfies some or all of the constraints.

Implementations§

Source§

impl VersionReq

Source

pub fn any() -> VersionReq

any() is a factory method which creates a VersionReq with no constraints. In other words, any version will match against it.

§Examples
use semver::VersionReq;

let anything = VersionReq::any();
Source

pub fn parse(input: &str) -> Result<VersionReq, ReqParseError>

parse() is the main constructor of a VersionReq. It takes a string like "^1.2.3" and turns it into a VersionReq that matches that particular constraint.

A Result is returned which contains a ReqParseError if there was a problem parsing the VersionReq. ReqParseError: enum.ReqParseError.html

§Examples
use semver::VersionReq;

let version = VersionReq::parse("=1.2.3");
let version = VersionReq::parse(">1.2.3");
let version = VersionReq::parse("<1.2.3");
let version = VersionReq::parse("~1.2.3");
let version = VersionReq::parse("^1.2.3");
let version = VersionReq::parse("1.2.3"); // synonym for ^1.2.3
let version = VersionReq::parse("<=1.2.3");
let version = VersionReq::parse(">=1.2.3");

This example demonstrates error handling, and will panic.

use semver::VersionReq;

let version = match VersionReq::parse("not a version") {
    Ok(version) => version,
    Err(e) => panic!("There was a problem parsing: {}", e),
};
§Errors

Returns an error variant if the input could not be parsed as a semver requirement.

Examples of common error causes are as follows:

  • \0 - an invalid version requirement is used.
  • >= >= 1.2.3 - multiple operations are used. Only use one.
  • >== 1.2.3 - an invalid operation is used.
  • a.0.0 - version components are not numeric.
  • 1.2.3- - an invalid identifier is present.
  • >= - major version was not specified. At least a major version is required.
  • 0.2* - deprecated requirement syntax. Equivalent would be 0.2.*.

You may also encounter an UnimplementedVersionRequirement error, which indicates that a given requirement syntax is not yet implemented in this crate.

Source

pub fn parse_compat( input: &str, compat: Compat, ) -> Result<VersionReq, ReqParseError>

parse_compat() is like parse(), but it takes an extra argument for compatibility with other semver implementations, and turns that into a VersionReq that matches the particular constraint and compatibility.

A Result is returned which contains a ReqParseError if there was a problem parsing the VersionReq. ReqParseError: enum.ReqParseError.html

§Examples
extern crate semver_parser;
use semver::VersionReq;
use semver_parser::Compat;

    let cargo_version = VersionReq::parse_compat("1.2.3", Compat::Cargo);
    let npm_version = VersionReq::parse_compat("1.2.3", Compat::Npm);
Source

pub fn exact(version: &Version) -> VersionReq

exact() is a factory method which creates a VersionReq with one exact constraint.

§Examples
use semver::VersionReq;
use semver::Version;

let version = Version { major: 1, minor: 1, patch: 1, pre: vec![], build: vec![] };
let exact = VersionReq::exact(&version);
Source

pub fn matches(&self, version: &Version) -> bool

matches() matches a given Version against this VersionReq. Version: struct.Version.html

§Examples
use semver::VersionReq;
use semver::Version;

let version = Version { major: 1, minor: 1, patch: 1, pre: vec![], build: vec![] };
let exact = VersionReq::exact(&version);

assert!(exact.matches(&version));
Source

pub fn is_exact(&self) -> bool

is_exact() returns true if there is exactly one version which could match this VersionReq. If false is returned, it is possible that there may still only be exactly one version which could match this VersionReq. This function is intended do allow short-circuiting more complex logic where being able to handle only the possibility of a single exact version may be cheaper.

§Examples
use semver::ReqParseError;
use semver::VersionReq;

fn use_is_exact() -> Result<(), ReqParseError> {
  assert!(VersionReq::parse("=1.0.0")?.is_exact());
  assert!(!VersionReq::parse("=1.0")?.is_exact());
  assert!(!VersionReq::parse(">=1.0.0")?.is_exact());
  Ok(())
}

use_is_exact().unwrap();

Trait Implementations§

Source§

impl Clone for VersionReq

Source§

fn clone(&self) -> VersionReq

Returns a duplicate 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 VersionReq

Source§

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

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

impl Display for VersionReq

Source§

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

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

impl From<RangeSet> for VersionReq

Source§

fn from(range_set: RangeSet) -> VersionReq

Converts to this type from the input type.
Source§

impl FromStr for VersionReq

Source§

type Err = ReqParseError

The associated error which can be returned from parsing.
Source§

fn from_str(s: &str) -> Result<VersionReq, ReqParseError>

Parses a string s to return a value of this type. Read more
Source§

impl Hash for VersionReq

Source§

fn hash<__H>(&self, state: &mut __H)
where __H: Hasher,

Feeds this value into the given Hasher. Read more
1.3.0 · Source§

fn hash_slice<H>(data: &[Self], state: &mut H)
where H: Hasher, Self: Sized,

Feeds a slice of this type into the given Hasher. Read more
Source§

impl Ord for VersionReq

Source§

fn cmp(&self, other: &VersionReq) -> 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 VersionReq

Source§

fn eq(&self, other: &VersionReq) -> 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 VersionReq

Source§

fn partial_cmp(&self, other: &VersionReq) -> 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 Eq for VersionReq

Source§

impl StructuralPartialEq for VersionReq

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, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. 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> Same for T

Source§

type Output = T

Should always be Self
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.
Source§

impl<V, T> VZip<V> for T
where V: MultiLane<T>,

Source§

fn vzip(self) -> V