<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          懂你,更懂Rust系列之Cargo

          共 1597字,需瀏覽 4分鐘

           ·

          2021-01-07 12:27

          我習(xí)慣在包里藏一瓶百無(wú)聊賴
          打發(fā)人間的白云和蒼狗
          設(shè)計(jì)睡著的未來(lái)
          我慶幸那些難堪正中我的下懷
          讓我懷疑我的存在
          最后笑了起來(lái)


          上一次,描述了Rust的安裝環(huán)境,及其環(huán)境配置,同時(shí)編寫(xiě)了第一個(gè)Rust程序"Hello World",需要回憶下的,點(diǎn)擊傳送門

          懂你,更懂Rust系列之環(huá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"


          bd7abe8c391babcc017ce2d9747540cc.webp


          如果沒(méi)有出現(xiàn)版本相關(guān)信息,請(qǐng)自行安裝Cargo


          下面,用Cargo創(chuàng)建新項(xiàng)目,看看和前面的有哪里不同


          打開(kāi)一個(gè)專門存放Rust項(xiàng)目的位置


          我這里是D盤,rustwork


          f7b2c90c39f199fa706b27e70c97858a.webp



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


          7e79733f8cff5a55472c43880340686c.webp


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


          3eaf973f09cefbe62bcb2bb5f1bea57d.webp


          查看項(xiàng)目信息


          b0c4b7c7a31bbd5f803a4110e01ac170.webp



          可以看見(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è)文件


          fab14664ccb23b425d859926aa0d8edc.webp


          這里描述了項(xiàng)目版本和作者相關(guān)信息


          [dependencies]可以增加更多的依賴,這里先不講述如何增加依賴,在以后的章節(jié)中會(huì)描述如何添加依賴



          打開(kāi)生成的src文件夾


          75eb1442a4e625d38f65eb320c400873.webp


          這里有一個(gè)生成好的main.rs文件,


          這里,編寫(xiě)這個(gè)文件,直接輸出"Hello Cargo"


          ed15c32157cfa50cd7462de476249fa3.webp


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


          5bc63629f06ead34078fa4a6e7c73770.webp


          這就表示構(gòu)建成功了


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


          0ae65b1e30a0b54217ec12b736916f65.webp


          這個(gè)target中會(huì)包含編譯后的信息


          進(jìn)入到target/debug中,可以看到編譯后的可執(zhí)行文件first-cargo.exe

          <注意區(qū)別Mac和Linux,前面環(huán)境搭建中說(shuō)過(guò)>


          1eb26f01eaa3327699966e1fff5975ed.webp


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


          6038c891a060137ced3923330402dc0f.webp



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


          28a8931c250c7dd9c80c4dde81aa15a7.webp



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


          這時(shí),改變下main.rs文件


          f33146a963fcd067c60dfa86e0790c5c.webp



          運(yùn)行


          f7392a240ce82e2ed261d5029b000c01.webp


          這里可以看見(jiàn)編譯的步驟


          關(guān)于Cargo,還要一個(gè)命令就是cargo check


          4819119d97899ab0a0d12a475589fc48.webp


          cargo check,顧名思義,只檢查編輯的代碼文件,并不會(huì)產(chǎn)生可執(zhí)行文件,只是確保代碼可被build,所以check要比build快很多


          當(dāng)代碼編寫(xiě)完畢,準(zhǔn)備編譯發(fā)布的時(shí)候,可以使用命令進(jìn)行優(yōu)化編譯:


          81f09e7fd70cdaa21589df1947fe1fcd.webp


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


          80b02a49ad5379d05d56e127b0005230.webp


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


          6d988b770ce0f2be188bf2c6237ce7fb.webp


          在這里也可以看見(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


          58344edccb4a8a4a00dcb9f8f4e68764.webp


          進(jìn)入項(xiàng)目文件夾編寫(xiě)代碼


          默認(rèn)創(chuàng)建的main.rs文件會(huì)有默認(rèn)的一行代碼:


          92f8c5e0f1b9152bf6984bc160e75050.webp


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


          a4b9c54c15a8e0d3e4e4cbbe339398b1.webp

          ????

          這里先直接把上圖代碼寫(xiě)到main.rs文件中


          編譯運(yùn)行:


          fc773c864df185e10c65c4b8fe276f44.webp


          簡(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ā)



          瀏覽 89
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          評(píng)論
          圖片
          表情
          推薦
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  91AAAAA在线观看 | 国产91 白丝在一线播放 | 日韩黄色视频免费看 | 黄色做爱视频免费观看 | 无码有码一区 |