#[non_exhaustive]
pub enum Op {
Exact,
Greater,
GreaterEq,
Less,
LessEq,
Tilde,
Caret,
Wildcard,
}Expand description
SemVer comparison operator: =, >, >=, <, <=, ~, ^, *.
Op::Exact
-
=I.J.K— exactly the version I.J.K -
=I.J— equivalent to>=I.J.0, <I.(J+1).0 -
=I— equivalent to>=I.0.0, <(I+1).0.0
Op::Greater
-
>I.J.K -
>I.J— equivalent to>=I.(J+1).0 -
>I— equivalent to>=(I+1).0.0
Op::GreaterEq
-
>=I.J.K -
>=I.J— equivalent to>=I.J.0 -
>=I— equivalent to>=I.0.0
Op::Less
-
<I.J.K -
<I.J— equivalent to<I.J.0 -
<I— equivalent to<I.0.0
Op::LessEq
-
<=I.J.K -
<=I.J— equivalent to<I.(J+1).0 -
<=I— equivalent to<(I+1).0.0
Op::Tilde (“patch” updates)
Tilde requirements allow the patch part of the semver version (the third number) to increase.
-
~I.J.K— equivalent to>=I.J.K, <I.(J+1).0 -
~I.J— equivalent to=I.J -
~I— equivalent to=I
Op::Caret (“compatible” updates)
Caret requirements allow parts that are right of the first nonzero part of the semver version to increase.
-
^I.J.K(for I>0) — equivalent to>=I.J.K, <(I+1).0.0 -
^0.J.K(for J>0) — equivalent to>=0.J.K, <0.(J+1).0 -
^0.0.K— equivalent to=0.0.K -
^I.J(for I>0 or J>0) — equivalent to^I.J.0 -
^0.0— equivalent to=0.0 -
^I— equivalent to=I
Op::Wildcard
-
I.J.*— equivalent to=I.J -
I.*orI.*.*— equivalent to=I
Variants (Non-exhaustive)§
This enum is marked as non-exhaustive
Non-exhaustive enums could have additional variants added in future. Therefore, when matching against variants of non-exhaustive enums, an extra wildcard arm must be added to account for any future variants.