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.