pub struct VersionRequirement {
pub comparison: VersionComparison,
pub version: Version,
}Expand description
A version requirement, e.g. for a dependency package.
It consists of a target version and a comparison function. A version requirement of >=1.5 has
a target version of 1.5 and a comparison function of VersionComparison::GreaterOrEqual.
See alpm-comparison for details on the format.
§Examples
use std::str::FromStr;
use alpm_types::{Version, VersionComparison, VersionRequirement};
let requirement = VersionRequirement::from_str(">=1.5")?;
assert_eq!(requirement.comparison, VersionComparison::GreaterOrEqual);
assert_eq!(requirement.version, Version::from_str("1.5")?);Fields§
§comparison: VersionComparisonVersion comparison function
version: VersionTarget version
Implementations§
Source§impl VersionRequirement
impl VersionRequirement
Sourcepub fn new(comparison: VersionComparison, version: Version) -> Self
pub fn new(comparison: VersionComparison, version: Version) -> Self
Create a new VersionRequirement
Sourcepub fn is_satisfied_by(&self, ver: &Version) -> bool
pub fn is_satisfied_by(&self, ver: &Version) -> bool
Returns true if the requirement is satisfied by the given package version.
§Examples
use std::str::FromStr;
use alpm_types::{Version, VersionRequirement};
let requirement = VersionRequirement::from_str(">=1.5-3")?;
assert!(!requirement.is_satisfied_by(&Version::from_str("1.5")?));
assert!(requirement.is_satisfied_by(&Version::from_str("1.5-3")?));
assert!(requirement.is_satisfied_by(&Version::from_str("1.6")?));
assert!(requirement.is_satisfied_by(&Version::from_str("2:1.0")?));
assert!(!requirement.is_satisfied_by(&Version::from_str("1.0")?));
// If pkgrel is not specified in the requirement, it is ignored in the comparison.
let requirement = VersionRequirement::from_str("=1.5")?;
assert!(requirement.is_satisfied_by(&Version::from_str("1.5-3")?));Sourcepub fn parser(input: &mut &str) -> ModalResult<Self>
pub fn parser(input: &mut &str) -> ModalResult<Self>
Recognizes a VersionRequirement in a string slice.
Consumes all of its input.
§Errors
Returns an error if input is not a valid alpm-comparison.
Sourcepub fn is_intersection(&self, other: &VersionRequirement) -> bool
pub fn is_intersection(&self, other: &VersionRequirement) -> bool
Checks whether another VersionRequirement forms an intersection with this one.
The intersection operation ∩ on versions simply checks if there is any possible set of
versions that can exist while upholding the constraints (e.g. >/<=) on both versions.
§Examples
- The expression
<3 ∩ <1forms the intersection of all versions<1 - The expression
<2 ∩ >1forms the intersectionXof all versions1<X<2 - The expression
=2 ∩ <3forms the intersection of the exact version2
use std::str::FromStr;
use alpm_types::VersionRequirement;
let requirement: VersionRequirement = "<1".parse()?;
assert!(requirement.is_intersection(&"<0.1".parse()?));
let requirement: VersionRequirement = "<2".parse()?;
assert!(requirement.is_intersection(&">1".parse()?));
let requirement: VersionRequirement = "=2".parse()?;
assert!(!requirement.is_intersection(&"<3".parse()?));Trait Implementations§
Source§impl Clone for VersionRequirement
impl Clone for VersionRequirement
Source§fn clone(&self) -> VersionRequirement
fn clone(&self) -> VersionRequirement
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreSource§impl Debug for VersionRequirement
impl Debug for VersionRequirement
Source§impl<'de> Deserialize<'de> for VersionRequirement
impl<'de> Deserialize<'de> for VersionRequirement
Source§fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
Source§impl Display for VersionRequirement
impl Display for VersionRequirement
Source§impl FromStr for VersionRequirement
impl FromStr for VersionRequirement
Source§fn from_str(s: &str) -> Result<Self, Self::Err>
fn from_str(s: &str) -> Result<Self, Self::Err>
Creates a new VersionRequirement from a string slice.
Delegates to VersionRequirement::parser.
§Errors
Returns an error if VersionRequirement::parser fails.