Semantic Versioning
Semantic versioning enables interoperability within the rust ecosystem.
If you are using a private cargo workspace not published to crates.io you can eschew considering semantic versions entirely and just never update your project versions. However if you are publishing your crate it's good to be aware of when a semantic version change is required.
Many crates break semver. You should still use cargo-semver-checks. I've been broken by crates which intentionally published semver breaking changes over a minor release.
Doing this too often will annoy your users and hurt the ecosystem.
- aahash crate nightly sniffing versions
- rustls 22 -> 23 aws-lc on windows nasm
- sqlx nightly dependency bug
Accidental and intentionally semver breakages happen. You should avoid breaking people's code, but if you do, at least do it with intention and a good reason.
To mitigate these breakages, you should consider committing your Cargo.lock file.