Cargo.toml dependency rev+version use cases


What are use cases for specifying both rev and version for git dependency in Cargo.toml?

some-dep = { git = "", rev = "1847fab", version = "0.1.0" }

Those look mutually exclusive to me but for some reason I'm allowed to specify both.

I don't know the original reasoning, but two use cases are:

  1. Assertion - if rev of git isn't version, the project won't compile, and you get a nice error message explaining the problem.
  2. Documentation