So far I have seen three...
[dependencies]
crate = \"1.0.0\" # I think this is an exact version match
crate = \"^1.0.0\" # I think this means \"use that latest
See the crates.io documentation page on "Specifying Dependencies". To summarise:
Nothing or a caret (^
) means "at least this version, until the next incompatible version".
A tilde (~
) means "at least this version, until (but excluding) the next minor/major release". That is, ~1.2.3
will accept 1.2.X
where X
is at least 3, ~1.2
will accept 1.2.*
, and ~1
will accept 1.*.*
.
A wildcard (*
) means "anything that looks like this". That is, 1.2.*
will accept 1.2.anything
(1.2.0
, 1.2.7-beta
, 1.2.93-dev.foo
, etc. but not 1.3.0
).
Inequalities (>=
, >
, <
, =
) mean the obvious: the version Cargo uses must satisfy the given inequality.