W3Cschool
恭喜您成為首批注冊(cè)用戶
獲得88經(jīng)驗(yàn)值獎(jiǎng)勵(lì)
Cargo 是 Rustaceans 用來(lái)幫助管理他們的 Rust 項(xiàng)目的一個(gè)工具。Cargo 目前處在 pre-1.0 狀態(tài),所以它仍然是一項(xiàng)正在進(jìn)行中的項(xiàng)目。然而,它已經(jīng)足夠用于許多 Rust 的項(xiàng)目,所以我們就假設(shè) Rust 項(xiàng)目從一開始就將使用 Cargo。
Cargo 管理三個(gè)方面的事情:構(gòu)建代碼,下載代碼所需要的依賴,構(gòu)建這些依賴項(xiàng)。前期階段,你的程序沒(méi)有任何的依賴,所以我們只使用其功能的第一部分。最終,我們會(huì)將添加更多依賴。從我們使用 Cargo 開始,添加依賴將會(huì)變得很容易。
如果你通過(guò)官方安裝程序安裝的 Rust,那么你也將擁有 Cargo。如果你用其他方法安裝的 Rust,你可能希望查看 Cargo 的自述,通過(guò)特定的指令來(lái)安裝它。
讓我們將 Hello World 轉(zhuǎn)換成 Cargo。
將我們的項(xiàng)目轉(zhuǎn)換成 Cargo,我們需要做兩件事情:創(chuàng)建一個(gè) Cargo.toml 配置文件,把我們的源文件放在正確的地方。讓我們先完成這部分:
$ mkdir src
$ mv main.rs src/main.rs
注意:因?yàn)槲覀儎?chuàng)建的是一個(gè)可執(zhí)行文件,所以我們使用的是 main.rs 文件。而如果我們想創(chuàng)建一個(gè)庫(kù)文件,我們應(yīng)該使用 lib.rs。自定義文件的位置入口點(diǎn)可以在下面描述的 TOML 文件中用 [[lib]]
或者 [[bin]]
關(guān)鍵字指定。
Cargo 期望你的源文件放在 src 目錄中。這與頂層的其他東西隔離開來(lái),比如 READMEs,許可證信息和其他任何與代碼無(wú)關(guān)的東西。Cargo 可以幫助我們保持項(xiàng)目的漂亮整潔。萬(wàn)物各得其所。
接下來(lái),編輯我們的配置文件:
$ editor Cargo.toml
一定要確保這個(gè)名字是正確的:首字母 C 要大寫!
把下面的內(nèi)容輸入到文件里面:
[package]
name = "hello_world"
version = "0.0.1"
authors = [ "Your name <you@example.com>" ]
這個(gè)文件是 TOML 格式的。讓它向你來(lái)做個(gè)自我介紹吧:
TOML 旨在成為一個(gè)最小的配置文件格式,由于明顯的語(yǔ)義的使用,使其容易閱讀。
TOML 旨在明確的映射到一個(gè)哈希表。在各種各樣的語(yǔ)言中,TOML應(yīng)該易于解析成數(shù)據(jù)結(jié)構(gòu)。
TOML與 INI 非常類似,但比其有一些額外的優(yōu)點(diǎn)。
一旦你有了這個(gè)文件,我們應(yīng)該準(zhǔn)備構(gòu)建了!試試這個(gè):
$ cargo build
Compiling hello_world v0.0.1 (file:///home/yourname/projects/hello_world)
$ ./target/debug/hello_world
Hello, world!
我們用 cargo build 構(gòu)建我們的項(xiàng)目,并且用 ./target/debug/hello_world
運(yùn)行它。我們可以用 cargo run 一步做到上面兩件事:
$ cargo run
Running `target/debug/hello_world`
Hello, world!
請(qǐng)注意,這一次我們沒(méi)有重建項(xiàng)目。Cargo 指出我們沒(méi)有改變?cè)次募?,所以它只是運(yùn)行的二進(jìn)制文件。如果我們做了修改,我們會(huì)看到它的改變:
$ cargo run
Compiling hello_world v0.0.1 (file:///home/yourname/projects/hello_world)
Running `target/debug/hello_world`
Hello, world!
這沒(méi)有簡(jiǎn)單的使用 rustc 來(lái)進(jìn)行整個(gè)過(guò)程。想想在將來(lái):當(dāng)我們的項(xiàng)目變得更加復(fù)雜時(shí),我們需要做更多的事情讓所有的部分正確編譯。如果利用 Cargo,隨著我們的項(xiàng)目增長(zhǎng),我們僅僅用 cargo build 即可,它就會(huì)以正確的方式運(yùn)行。
當(dāng)你的項(xiàng)目終于準(zhǔn)備發(fā)布了,你可以使用 cargo build --release 用最優(yōu)化的方式編譯你的項(xiàng)目。
你可能還會(huì)注意到,Cargo 已經(jīng)創(chuàng)建了一個(gè)新的文件: Cargo.lock。
[root]
name = "hello_world"
version = "0.0.1"
Cargo 用這個(gè)文件跟蹤你應(yīng)用程序中的依賴關(guān)系?,F(xiàn)階段,我們沒(méi)有任何依賴,所以顯得有點(diǎn)稀疏。你從不需要編輯該文件,讓 Cargo 處理它就好了。
好了!我們已經(jīng)成功地利用 Cargo 構(gòu)建了 hello_world。盡管我們的程序很簡(jiǎn)單,但是我們開始使用的開拓未來(lái) Rust 事業(yè)的真正工具了。你可以期待利用如下所示的做法,開始幾乎所有的 Rust 項(xiàng)目:
$ git clone someurl.com/foo
$ cd foo
$ cargo build
每次當(dāng)你想開始一個(gè)新的項(xiàng)目時(shí),你不必經(jīng)歷整個(gè)過(guò)程!Cargo 有能力做一個(gè)基本的項(xiàng)目目錄,你可以在此基礎(chǔ)上馬上開始開發(fā)。
用 Cargo 開始一個(gè)新項(xiàng)目,使用命令 cargo new:
$ cargo new hello_world --bin
我們傳遞了參數(shù) --bin,因?yàn)槲覀冋趧?chuàng)建一個(gè)二進(jìn)制程序:如果我們創(chuàng)建的是一個(gè)庫(kù)文件,就不要這個(gè)參數(shù)了。
讓我們看看 Cargo 為我們生成了什么:
$ cd hello_world
$ tree .
.
├── Cargo.toml
└── src
└── main.rs
1 directory, 2 files
如果你沒(méi)有 tree 命令,你可以從你的發(fā)行版的包管理器中獲取。它不是必需的,但是它確實(shí)有用。
這是開始我們需要的全部。首先,讓我們看看 Cargo.toml:
[package]
name = "hello_world"
version = "0.0.1"
authors = ["Your Name <you@example.com>"]
Cargo 基于你提供的參數(shù)作為合理的默認(rèn)值填充該文件,你可用 git 獲取全局配置。你可能會(huì)注意到,Cargo 也初始化 hello_world 目錄為一個(gè) git 倉(cāng)庫(kù)。
下面是 src/main.rs
里面的內(nèi)容:
fn main() {
println!("Hello, world!");
}
Cargo 已經(jīng)為我們生成了一個(gè) “Hello World !“,你可以開始編碼了!Cargo 有自己的指南,它涵蓋 Cargo 許多更有深度的特性。
現(xiàn)在您已經(jīng)了解了工具,讓我們了解更多關(guān)于 Rust 語(yǔ)言本身的內(nèi)容。這些基礎(chǔ)知識(shí)將使你在剩下的時(shí)間里更好的理解 Rust。
你有兩個(gè)選擇:深入項(xiàng)目,進(jìn)入章節(jié)”學(xué)習(xí) Rust”,或者從基礎(chǔ)開始,學(xué)習(xí)“語(yǔ)法和語(yǔ)義”章節(jié)。更有經(jīng)驗(yàn)的系統(tǒng)程序員可能會(huì)更喜歡“學(xué)習(xí) Rust”,而擁有動(dòng)態(tài)語(yǔ)言背景的可能兩者皆可。不同的人有不同的學(xué)習(xí)方式!選擇適合你的。
Copyright©2021 w3cschool編程獅|閩ICP備15016281號(hào)-3|閩公網(wǎng)安備35020302033924號(hào)
違法和不良信息舉報(bào)電話:173-0602-2364|舉報(bào)郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號(hào)
聯(lián)系方式:
更多建議: