官术网_书友最值得收藏!

bt2-L 1.8 用Cargo進(jìn)行包管理

Cargo可以為開發(fā)者安裝依賴項。在crate.io上有越來越多的免費crate(Rust中對軟件包的稱呼),Cargo使得安裝和使用這些crate,以及發(fā)布自己的crate,都變得很簡單。

你可以通過輸入cargo search [search term],或者訪問crate網(wǎng)站來查找可用的crate。例如,以bracket-terminal為關(guān)鍵詞進(jìn)行搜索可以得到如下的結(jié)果:

搜索功能也會檢索crate的描述信息。例如,你需要尋找一個“slot map”,就可以得到多個搜索結(jié)果:

在找到希望使用的crate以后,你需要將其添加到Cargo.toml中。在[dependencies]小節(jié)下添加一行并寫上依賴的名字和版本號:

[dependencies]
bracket-lib = "0.8.0"

這里的版本號采用了語義化版本號的規(guī)范,就像在當(dāng)前項目中所使用的版本號一樣。語義化版本號所表達(dá)的含義如下。

(1)第一位數(shù)字表示“主”版本。某個crate一旦發(fā)布,就要盡力保證不做破壞兼容性的修改,從而保證主版本號不用增長。0號版本是一個特例。主版本號為0的crate處于預(yù)發(fā)布(pre-release)狀態(tài)——它們可以做出破壞兼容性的修改。

(2)第二位數(shù)字表示“次”版本。添加新功能但同時保證不破壞兼容性的改動通常會導(dǎo)致次要版本號的增長。

(3)第三位數(shù)字表示修訂號。對于一個缺陷的快速修復(fù)通常會導(dǎo)致修訂號的增長。

用戶可以通過一些限定符來實現(xiàn)對所使用的crate的版本號進(jìn)行細(xì)粒度控制。

(1)=0.8.0將只使用0.8.0這個版本,任何高或低的版本都不行。

(2)^0.8.0將使用任何版本號等于或大于0.8.0的版本,但只能在0.x這個范圍內(nèi)使用[6]


[6] 只能在主版本號為0.x的情況下使用。——譯者注

(3)~0.8.0將使用任何次要版本號大于0.8.0的版本。如果有新版本出現(xiàn),則會自動升級,即使升級會破壞crate的API兼容性。

除版本號外,還有一些其他的選項可供配置。你可以指定一個版本的來源:它可以來自crate.io,可以來自一個git倉庫的地址,甚至來自一個存放在當(dāng)前計算機(jī)上的crate的本地路徑。舉個例子,假設(shè)你想使用GitHub版本的bracket-lib庫,則可以按如下方式指定:

[dependencies]
bracket-lib = { git = "▓▓▓▓▓▓//github ▓▓▓▓/thebracket/bracket-lib" }

crate還提供了特性開關(guān)(feature flag),這使得crate能夠提供可選功能。例如,bracket-lib可以被配置成使用Amethyst作為其后端,而不是使用OpenGL。用如下方法來開啟這樣的特性:

[dependencies]
bracket-lib = {
    git = "https://github.com/thebracket/bracket-lib",
default-features = false,
    features = [ "amethyst_engine_vulkan" ]
}

你可以通過從Cargo.toml文件中刪除對應(yīng)條目的方法來為項目刪除一個依賴項。運行cargo clean,則會把這些依賴從這臺計算機(jī)上徹底刪除[7]。在3.1.2節(jié)中,你將用到Cargo的依賴項。


[7] 從Cargo.toml中刪除依賴項時僅表示項目不再使用該依賴了,但并不會刪除已經(jīng)下載到本地計算機(jī)的依賴項。如果希望釋放存儲空間,則需要在Cargo.toml中刪除依賴項之后,再執(zhí)行cargo clean來徹底將其刪除。——譯者注

主站蜘蛛池模板: 衡阳市| 子长县| 始兴县| 高雄县| 甘德县| 凌云县| 江北区| 陵水| 大同县| 东辽县| 新晃| 兴业县| 南平市| 宜兴市| 洛川县| 鹰潭市| 昌黎县| 广元市| 太湖县| 滦南县| 余江县| 河东区| 龙门县| 葵青区| 黄冈市| 宁南县| 遂川县| 海晏县| 虞城县| 伊宁县| 舞阳县| 增城市| 搜索| 明溪县| 巩义市| 高州市| 防城港市| 顺义区| 宜兰市| 专栏| 济南市|