懂你,更懂Rust系列之Cargo
我習(xí)慣在包里藏一瓶百無(wú)聊賴
打發(fā)人間的白云和蒼狗
設(shè)計(jì)睡著的未來(lái)
我慶幸那些難堪正中我的下懷
讓我懷疑我的存在
最后笑了起來(lái)
上一次,描述了Rust的安裝環(huán)境,及其環(huán)境配置,同時(shí)編寫(xiě)了第一個(gè)Rust程序"Hello World",需要回憶下的,點(diǎn)擊傳送門
第一個(gè)Rust程序是比較簡(jiǎn)單的程序了,一般來(lái)說(shuō),寫(xiě)一個(gè)程序,可能需要添加更多的依賴包,幫助程序的運(yùn)行,同時(shí)也避免閉門造車。類似Java的maven構(gòu)建程序,Rust也有屬于自己的項(xiàng)目管理和包管理器,這就是--
Cargo
按照上文提到的環(huán)境搭建,是已經(jīng)安裝好了Cargo的,
可以檢查下 cmd命令"Cargo? --version"

如果沒(méi)有出現(xiàn)版本相關(guān)信息,請(qǐng)自行安裝Cargo
下面,用Cargo創(chuàng)建新項(xiàng)目,看看和前面的有哪里不同
打開(kāi)一個(gè)專門存放Rust項(xiàng)目的位置
我這里是D盤,rustwork

創(chuàng)建一個(gè)first-cargo

進(jìn)入該項(xiàng)目

查看項(xiàng)目信息

可以看見(jiàn)Cargo給創(chuàng)建了2個(gè)文件和一個(gè)src文件夾
其中一個(gè).gitignore是創(chuàng)建的基于git遠(yuǎn)程項(xiàng)目的文件信息,如果在現(xiàn)有的Git倉(cāng)庫(kù)中運(yùn)行Cargo,將不再會(huì)生成.gitignore文件,可以使用命令
cargo new——vcs=git
來(lái)覆蓋
另外一個(gè)Cargo.toml,打開(kāi)看看這個(gè)文件

這里描述了項(xiàng)目版本和作者相關(guān)信息
[dependencies]可以增加更多的依賴,這里先不講述如何增加依賴,在以后的章節(jié)中會(huì)描述如何添加依賴
打開(kāi)生成的src文件夾

這里有一個(gè)生成好的main.rs文件,
這里,編寫(xiě)這個(gè)文件,直接輸出"Hello Cargo"

下面是構(gòu)建這個(gè)Cargo項(xiàng)目:

這就表示構(gòu)建成功了
構(gòu)建完成后,在項(xiàng)目根目錄下,可以發(fā)現(xiàn)多了一個(gè)文件夾:

這個(gè)target中會(huì)包含編譯后的信息
進(jìn)入到target/debug中,可以看到編譯后的可執(zhí)行文件first-cargo.exe
<注意區(qū)別Mac和Linux,前面環(huán)境搭建中說(shuō)過(guò)>

這里執(zhí)行這個(gè)可執(zhí)行文件

也可以通過(guò)直接Cargo命令運(yùn)行

此時(shí)可以看見(jiàn),沒(méi)有看見(jiàn)編譯的過(guò)程,因?yàn)檫@時(shí)候沒(méi)有對(duì)文件進(jìn)行改變,所以沒(méi)有編譯的過(guò)程
這時(shí),改變下main.rs文件

運(yùn)行

這里可以看見(jiàn)編譯的步驟
關(guān)于Cargo,還要一個(gè)命令就是cargo check

cargo check,顧名思義,只檢查編輯的代碼文件,并不會(huì)產(chǎn)生可執(zhí)行文件,只是確保代碼可被build,所以check要比build快很多
當(dāng)代碼編寫(xiě)完畢,準(zhǔn)備編譯發(fā)布的時(shí)候,可以使用命令進(jìn)行優(yōu)化編譯:

此時(shí),在target下面會(huì)生成一個(gè)release文件夾

這個(gè)release是之前沒(méi)有的(前面不是在debug文件夾中找到可執(zhí)行文件的嘛)

在這里也可以看見(jiàn)被優(yōu)化編譯后的可執(zhí)行文件
Rust實(shí)戰(zhàn)--小游戲
通過(guò)前面環(huán)境搭建和本節(jié)的Cargo構(gòu)建項(xiàng)目,這里先來(lái)一個(gè)實(shí)戰(zhàn)Rust小項(xiàng)目
練練手
創(chuàng)建一個(gè)Cargo項(xiàng)目-->?first-guess

進(jìn)入項(xiàng)目文件夾編寫(xiě)代碼
默認(rèn)創(chuàng)建的main.rs文件會(huì)有默認(rèn)的一行代碼:

這里因?yàn)榇a量比較多了,就不用命令行寫(xiě)了,先用文本編輯器編寫(xiě)<后面會(huì)介紹幾種IED>

????
這里先直接把上圖代碼寫(xiě)到main.rs文件中
編譯運(yùn)行:

簡(jiǎn)單對(duì)上面代碼做個(gè)說(shuō)明
第1行:use std::io 這是指使用到Rust標(biāo)準(zhǔn)語(yǔ)言庫(kù),這里因?yàn)樾枰@取用戶鍵盤輸入數(shù)據(jù),所以需要用到IO庫(kù)
第8行:let mut guess = String::new() 這是指定義一個(gè)可變變量<這里先了解這個(gè)詞語(yǔ),后面說(shuō)Rust語(yǔ)法和數(shù)據(jù)類型會(huì)詳細(xì)說(shuō)到>guess來(lái)接收用戶輸入的一個(gè)數(shù)字,這里定義的字符串來(lái)接收,所以只要你輸入的可轉(zhuǎn)化為字符串,程序都是可以的,不會(huì)拋出異常。
第10-12行:
io::stdin()
? ? ? ? .read_line(&mut guess)
? ? ? ? .expect("讀取異常")
調(diào)用IO庫(kù)讀取用戶輸入的數(shù)字,或拋出異常
今日就先到這兒了,后續(xù)Rust語(yǔ)法和數(shù)據(jù)類型
有喜歡的歡迎關(guān)注轉(zhuǎn)發(fā)
