- Rust游戲開發(fā)實戰(zhàn)
- (美)赫伯特·沃爾弗森
- 985字
- 2024-09-05 16:34:16
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來徹底將其刪除。——譯者注
- Java程序設(shè)計(慕課版)
- Designing Machine Learning Systems with Python
- R語言數(shù)據(jù)可視化之美:專業(yè)圖表繪制指南
- 深度強(qiáng)化學(xué)習(xí)算法與實踐:基于PyTorch的實現(xiàn)
- Eclipse Plug-in Development:Beginner's Guide(Second Edition)
- Web Development with MongoDB and Node(Third Edition)
- PySide 6/PyQt 6快速開發(fā)與實戰(zhàn)
- 快速入門與進(jìn)階:Creo 4·0全實例精講
- 編程可以很簡單
- Python趣味編程與精彩實例
- Mastering SciPy
- Visual Basic語言程序設(shè)計上機(jī)指導(dǎo)與練習(xí)(第3版)
- CryENGINE Game Programming with C++,C#,and Lua
- 數(shù)據(jù)結(jié)構(gòu)與算法詳解
- Android Application Programming with OpenCV 3