文章儘可能以一個初學者的角度開始 Rust 的學習,但顯然很難不帶我的主觀色彩和角度,只能盡力去客觀寫。html
第一次知道 Rust 的時候,免不了搜索,百度、谷歌、必應等均可以搜出來官網地址:Rust Programming Language 。首頁看到一個字眼 crate
,於我而言是陌生的。git
In 2018, the Rust community decided to improve programming experience for a few distinct domains (see the 2018 roadmap). For these, you can find many high-quality crates and some awesome guides on how to get started.編程
crate 是什麼?json
crate 相似於 .NET class library,由於我對 .Net 更熟悉,因此會拿 .Net 作比對,類比是學習的好方式。api
可是顯然不能真的認爲它們很是類似,而且試圖尋找它們的相同點,作比對是爲了幫助理解。dom
.Net 引用類庫的關鍵字是 using,Rust 引用 crate 的關鍵字是 use。ide
.Net 聲明命名空間關鍵字是 namespace,Rust 聲明 module 的關鍵字是 mod。學習
C# 對類型和類型成員規定了幾種可訪問性級別,一樣 Rust 也有訪問性級別規定。mod 中的方法,默認私有訪問,同 mod 下可訪問,外部訪問該模塊的方法的話,需使用關鍵字 pub 定義該方法。我想關鍵字 pub,可類比 C# 的 public 修飾符。固然兩者絕對不可等同。 pub 可用於加載深層目錄下的模塊 - pub mod
或者 pub use
[1]。ui
.Net 項目中添加一個 nuget package,須要一個程序包源,地址是 https://api.nuget.org/v3/index.json 。若是想在線瀏覽查看有多少種或者有哪些包,可訪問 NuGet Gallery | Packages 。Rust 也有相似的地址,能夠查看有哪些 crate 可供選擇,可訪問 Crates - crates.io: Rust Package Registry 。spa
最後仍是要給出一個定義,回答 crate 是什麼這個問題。
Rust 中,
crate
是一個獨立的可編譯單元。具體說來,就是一個或一批文件(若是是一批文件,那麼有一個文件是這個 crate 的入口)。它編譯後,會對應着生成一個可執行文件或一個庫。
各位看官或許會以爲奇怪,上面的一堆比對又是爲了什麼呢?是爲了經過比對加深理解和記憶,將不熟悉的概念和知識內化爲本身的知識,經過熟悉的知識做爲橋接,使其易於本身接受。
同時在不斷引伸和解讀的過程,也會不斷的產生問題,例如爲何有關鍵字 use mod pub ,它們的出現是爲了解決什麼問題,這些關鍵字有沒有更多的使用場景,顯然我在上文中並無展開寫;還有如何生成一個 crate,並將其上傳到 crates.io。
因此有問有答的學習方式,彷佛是真的很是適合我。我會盡可能保持這種不斷挖掘好奇心的方式。
參考:
具體使用方法不在本篇詳細敘述 ↩︎