在Cargo.toml中有一個[denpendencies]節點,指定需要crate的名稱以及版本,其中有些約定(在rust中使用了一個叫semver庫來處理,原單詞:Semantic version,翻譯成:語義化版本標準,最全原文:Semantic version parsing and comparison,我這理解為語義化的版本解析和比較)。
crate中有主要,次要,補丁來組成版本,比如md5 ="0.6.1",表示現在的版本在第六個次要版本,第1個補丁。
1:不加任何符號指定(這種和使用"^"符號一樣的作用,具體的看第3點)
md5 = "0" <==> [0.0.0 -- <1.0.0]
md5 = "0.6" <==> [0.6.0 -- <0.7.0]
md5 = "0.6.1" <==> [0.6.1 -- <0.7.0]
2: *
md5 = "*" // 接受任何新版本
3:\^符號
插入符,從左往右數,
如果是0就往下一個版本號找,一直(總共就三個)找到一個非0的然後+1,如果一直沒找到,就在指定的位置上+1(不包含)
^1.2.3 := >=1.2.3 <2.0.0
^0.2.3 := >=0.2.3 <0.3.0
^0.0.3 := >=0.0.3 <0.0.4
^0.0 := >=0.0.0 <0.1.0
^0 := >=0.0.0 <1.0.0
4:\~
只接受最小範圍的版本
md5 = "~0" <==> [0.0.0---1.0.0(不包含)]
md5="~0.6" <==> [0.6.0---0.7.0(不包含)]
md5="~0.6.1" <==> [0.6.0---0.7.0(不包含)]
第二和第三個是一樣的,因為補丁版本已經是最低的
5:> ,<,=
限制大範圍版本
md5 = ">0.6.1",//最低版本0.6.2
md5 = ">=0.6.1" //最低版本0.6.1
md5 = "=0.6.1" //鎖定版本0.6.1
6:{}
可配置的外部地址,支援git倉庫,本地路徑等
md5 = { git = "http://github/mdt_rs", branch = "master" } //倉庫地址和版本
md5 = { path = "../md5" ,version = "0.1.0", feature=“cust”} // version可以使用6之前的約束,feature是編譯屬性
其他
在依賴中有很多不可預發的出現一些問題
1:迴圈依賴
2:不同crate依賴的版本庫不同
3:不同平臺(作業系統)不同依賴
4:不同環境(開發,測試,生產)不同依賴
本作品採用《CC 協議》,轉載必須註明作者和本文連結