#[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.