cargo 中的版本依賴

vms_g發表於2019-12-19

在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 協議》,轉載必須註明作者和本文連結

相關文章