当你在Cargo.toml里写版本号的时候,比如image = "0.6.1",cargo会宽松地匹配,它会使用兼容0.6.1版本的最新版本。兼容规则和semver相同,规则如下:
以0.0开头的版本是非常原始的版本,cargo认为它和其它任何版本都不兼容;
以0.x(x非零)开头的版本被认为和其它的0.x系列版本兼容,比如0.6.3和0.6.1版本是兼容的,但是0.7.1和0.6.1版本不兼容;
一旦版本号达到了1.0,只要主版本号一样就是兼容的,比如2.17.99和2.0.1版本兼容,但是3.0.1和2.0.1不兼容。
版本号默认是弹性的,但是可以指定精确的版本号,比如:
image = "=0.10.0"
image = ">=1.0.5"
image = "<=2.7.10"
image = ">1.0.5 <1.1.9"
偶尔你会看到版本号里有通配符\*,表示任意版本都可以,除非其他的Cargo.toml文件里指定了一个更明确的版本约束,否则cargo会用最新的版本。
兼容性规则是库的提供者和使用者之间的约定,如果你维护了一个库当前版本号是1.7,这时你决定删除一个函数或者其他不兼容的修改,你应该让版本号跳到2.0。
