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 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 AlpmParser for VersionRequirement
impl AlpmParser for VersionRequirement
Source§impl Clone for VersionRequirement
impl Clone for VersionRequirement
Source§fn clone(&self) -> VersionRequirement
fn clone(&self) -> VersionRequirement
1.0.0 (const: unstable) · 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.
Source§impl PartialEq for VersionRequirement
impl PartialEq for VersionRequirement
Source§fn eq(&self, other: &VersionRequirement) -> bool
fn eq(&self, other: &VersionRequirement) -> bool
self and other values to be equal, and is used by ==.Source§impl Serialize for VersionRequirement
impl Serialize for VersionRequirement
impl Eq for VersionRequirement
impl StructuralPartialEq for VersionRequirement
Auto Trait Implementations§
impl Freeze for VersionRequirement
impl RefUnwindSafe for VersionRequirement
impl Send for VersionRequirement
impl Sync for VersionRequirement
impl Unpin for VersionRequirement
impl UnsafeUnpin for VersionRequirement
impl UnwindSafe for VersionRequirement
Blanket Implementations§
§impl<T> AnyEq for T
impl<T> AnyEq for T
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<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<U> ParserUntil for Uwhere
U: AlpmParser,
impl<U> ParserUntil for Uwhere
U: AlpmParser,
Source§fn parser_until<'a, P>(
delimiter: P,
) -> impl Parser<&'a str, U, ErrMode<ContextError>>
fn parser_until<'a, P>( delimiter: P, ) -> impl Parser<&'a str, U, ErrMode<ContextError>>
Returns a [Parser] that parses Self until the given delimiter parser
matches.
§Note
Does not consume the delimiter.
Source§fn parser_until_eof(input: &mut &str) -> Result<Self, ErrMode<ContextError>>
fn parser_until_eof(input: &mut &str) -> Result<Self, ErrMode<ContextError>>
Source§impl<U> ParserUntilInclusive for Uwhere
U: ParserUntil,
impl<U> ParserUntilInclusive for Uwhere
U: ParserUntil,
Source§fn parser_until_inclusive<'a, P>(
delimiter: P,
) -> impl Parser<&'a str, U, ErrMode<ContextError>>
fn parser_until_inclusive<'a, P>( delimiter: P, ) -> impl Parser<&'a str, U, ErrMode<ContextError>>
Returns a [Parser] that parses the whole input and consumes the given delimiter parser.
Delegates to ParserUntil::parser_until and consumes the delimiter.