pub struct Dewey { /* private fields */ }Expand description
Package pattern matching for so-called “dewey” patterns.
These are common across pkgsrc as a way to specify a range of versions for a package. Despite the name, these have nothing to do with the Dewey decimal system.
It is unlikely that anyone would want to use this directly. The main
user-facing interface is Pattern which will handle any patterns
matching Dewey style automatically. However, in case it proves at all
useful, it is made public.
This fully supports the same modifiers and logic that pkg_install does,
according to the following rules:
| Modifier(s) | Numeric value |
|---|---|
alpha | -3 |
beta | -2 |
pre, rc | -1 |
pl, _, . | 0 |
| empty value | 0 |
§Examples
use pkgsrc::Dewey;
// A version greater than or equal to 1.0 and less than 2.0 is required.
let m = Dewey::new("pkg>=1.0<2");
// A common way to specify that any version is ok.
let m = Dewey::new("pkg>=0");
// Any version as long as it is earlier than 7.
let m = Dewey::new("windows<7");Implementations§
source§impl Dewey
impl Dewey
sourcepub fn new(pattern: &str) -> Result<Dewey, DeweyError>
pub fn new(pattern: &str) -> Result<Dewey, DeweyError>
Compile a pattern. If the pattern is invalid in any way a
DeweyError is returned.
§Example
use pkgsrc::Dewey;
// A correctly specified range.
assert!(Dewey::new("pkg>=1.0<2").is_ok());
// Incorrect order of operators.
assert!(Dewey::new("pkg<1>2").is_err());
// Invalid use of incompatible operators.
assert!(Dewey::new("pkg>1>=2").is_err());sourcepub fn matches(&self, pkg: &str) -> bool
pub fn matches(&self, pkg: &str) -> bool
Return whether a given str matches the compiled pattern. pkg
must be a fully-specified PKGNAME.
§Example
use pkgsrc::Dewey;
let m = Dewey::new("pkg>=1.0<2").unwrap();
assert_eq!(m.matches("pkg-1.0rc1"), false);
assert_eq!(m.matches("pkg-1.0"), true);
assert_eq!(m.matches("pkg-2.0rc1"), true);
assert_eq!(m.matches("pkg-2.0"), false);Trait Implementations§
impl StructuralPartialEq for Dewey
Auto Trait Implementations§
impl Freeze for Dewey
impl RefUnwindSafe for Dewey
impl Send for Dewey
impl Sync for Dewey
impl Unpin for Dewey
impl UnwindSafe for Dewey
Blanket Implementations§
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
Mutably borrows from an owned value. Read more
source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
source§unsafe fn clone_to_uninit(&self, dst: *mut T)
unsafe fn clone_to_uninit(&self, dst: *mut T)
🔬This is a nightly-only experimental API. (
clone_to_uninit)