https://bugzilla.redhat.com/show_bug.cgi?id=2124697
--- Comment #63 from Fabio Valentini decathorpe@gmail.com --- Why didn't you do the same for pre-1.0 versions? The same restrictions apply there.
For example, the "nix" crate will likely be updated to version 0.25.0 soon, and using the >= 0.24.2 requirement you have now, doing that would break this package (as it would start to pull in rust-nix-0.25, making the build of this package fail with missing dependency on nix v0.24).
Instead, use "(crate(nix/default) >= 0.24.2 with crate(nix/default) < 0.25~)" so that this package will continue pulling in the nix v0.24 compat package once the main nix package is updated to v0.25.
As I mentioned, cargo-semver provides stronger compatibility guarantees than plain semver in this regard (for pre-1.0-versions), as patch releases in the 0.24.x series are supposed to be compatible with each other - but minor releases of pre-1.0 versions are treated just like "major" version changes (i.e. something like v0.24 -> v0.25).
The only range of versions where "exact" requirements are fine are for pre-0.1-versions like "0.0.x", where a change from "0.0.x" to "0.0.x+1" conveys a breaking change, as well (if you discount pre-releases).