欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Rust中Cargo的使用詳解

 更新時(shí)間:2022年11月11日 15:44:04   作者:天界程序員  
Cargo 是 Rust 的構(gòu)建系統(tǒng)和包管理器,?多數(shù) Rustacean 們使? Cargo 來管理他們的 Rust 項(xiàng)?,因?yàn)樗梢詾槟闾幚砗芏嗳蝿?wù),?如構(gòu)建代碼、下載依賴庫并編譯這些庫,這篇文章主要介紹了Rust中Cargo的使用,需要的朋友可以參考下

1、cargo簡(jiǎn)介

Cargo 是 Rust 的構(gòu)建系統(tǒng)和包管理器。?多數(shù) Rustacean 們使? Cargo 來管理他們的 Rust 項(xiàng)?,因?yàn)樗梢詾槟闾幚砗芏嗳蝿?wù),?如構(gòu)建代碼、下載依賴庫并編譯這些庫。(我們把代碼所需要的庫叫做 依賴(dependencies))。

查看cargo版本

cargo --version

我這里可以看到具體的版本好和日期

cargo 1.63.0 (fd9c4297c 2022-07-01)

2、使用cargo創(chuàng)建項(xiàng)目

cargo new hello_cargo
cd hello_cargo

第一行命令,創(chuàng)建了一個(gè)名為hello_cargo的目錄和項(xiàng)目。

進(jìn)入目錄可以看到以下目錄:

|-src
| |-main.rs
|-.gitignore
|-Cargo.toml

2.1、關(guān)于Cargo.toml

[package]
name = "hello_cargo"
version = "0.1.0"
edition = "2021"

# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
[dependencies]
  • 第一行,[package], 是一個(gè)片段(section)標(biāo)題,表明下面的語句用來配置一個(gè)包。隨著我們?cè)谶@個(gè)文件增加更多的信息,還將增加其他片段(section)接踵而至的3行設(shè)置了Cargo編譯程序所需要的配置:name(項(xiàng)目名稱)、version(項(xiàng)目的版本)、edition(使用的Rust版本)
  • 最后一行,[dependcies], 是羅列項(xiàng)目依賴的片段的開始,在Rust中,代碼包被稱為crates。當(dāng)然在這個(gè)項(xiàng)目我們并不需要其他的crate,不過后面我們會(huì)用到這個(gè)片段。

2.2 、關(guān)于src/main.rs

fn main() {
    println!("Hello, world!")
}

? Cargo為我們自動(dòng)生成一個(gè)“Hello,world!” 程序,正如我們之前編寫的示例helloWorld一樣,不同的是它將main.rs文件放到了src目錄下面。

? Cargo 期望源文件存放在src目錄中。項(xiàng)目根目錄只存放 README、license信息、配置文件和其他跟代碼無關(guān)的文件。使用Cargo幫助你保持項(xiàng)目干凈整潔,一切井井有條。

? 當(dāng)然如果沒有使用Cargo創(chuàng)建的項(xiàng)目,我們也可以轉(zhuǎn)化為一個(gè)Cargo項(xiàng)目,比如我之前的HelloWorld項(xiàng)目。我們可以新建目錄src、新建源文件main.rs在src目錄下、以及創(chuàng)建一個(gè)合適的Cargo.toml 文件。

3、構(gòu)建Cargo項(xiàng)目

我們現(xiàn)在已經(jīng)使用Cargo創(chuàng)建好了hello_cargo項(xiàng)目,現(xiàn)在我們進(jìn)入項(xiàng)目目錄

cd hello_cargo

然后我們可以使用Cargo中的build命令開始構(gòu)建項(xiàng)目

cargo build

執(zhí)行命令后,會(huì)打印出如下結(jié)果:

Compiling hello_cargo v0.1.0 (D:\RustLang\RustWorkSpace\hello_cargo)
    Finished dev [unoptimized + debuginfo] target(s) in 1.09s

到這里我們首次運(yùn)行cargo build成功,你會(huì)發(fā)現(xiàn)此時(shí)項(xiàng)目目錄中多出了一個(gè)target目錄和Cargo.lock文件。

這和前端打包類似,如執(zhí)行npm run build 命令后npm會(huì)默認(rèn)生成一個(gè)dist目錄,里面就是源碼代碼經(jīng)過編譯和壓縮后可以放在服務(wù)器運(yùn)行的網(wǎng)頁頁面。其中生成的Cargo.lock文件也和package-lock.json類似,不用說Cargo.toml和package.json 對(duì)應(yīng)。

最后我們可以運(yùn)行構(gòu)建成功后生成的可執(zhí)行文件

.\target\debug\hello_cargo.exe

如果一切順利,終端上應(yīng)該打印出Hello,world! 。

由于默認(rèn)的構(gòu)建?法是調(diào)試構(gòu)建(debug build),Cargo 會(huì)將可執(zhí)??件放在名為 debug 的?錄中。

4、構(gòu)建并運(yùn)行Cargo項(xiàng)目

? 在認(rèn)識(shí)了cargo build命令,我們知道它是用來構(gòu)建Cargo項(xiàng)目的,但是運(yùn)行項(xiàng)目需要我們自己去target目錄里面去找到可執(zhí)行文件,并執(zhí)行它。

? 接下來我們來認(rèn)識(shí)一個(gè)新的命令cargo run 。它可以構(gòu)建并運(yùn)行構(gòu)建后的可執(zhí)行文件。

cargo run 

打印結(jié)果:

 Finished dev [unoptimized + debuginfo] target(s) in 0.01s
     Running `target\debug\hello_cargo.exe`
Hello, world!

? 相信到了這里,我們心中一定明白這個(gè)命令,今后會(huì)是我們的長(zhǎng)期合作伙伴,魂?duì)繅?mèng)縈那種。

? 當(dāng)然有必要說明一下,因?yàn)橹拔覀円呀?jīng)使用cargo build 命令構(gòu)建了hello_cargo項(xiàng)目 , 所以此時(shí)執(zhí)行的 cargo run 命令并沒有重新編譯,而是直接運(yùn)行了可執(zhí)行文件,打印出了Hello,world!

? 接下來我們看看,改變了源文件在執(zhí)行該命令會(huì)是什么結(jié)果:

 Compiling hello_cargo v0.1.0 (D:\RustLang\RustWorkSpace\hello_cargo)
    Finished dev [unoptimized + debuginfo] target(s) in 0.63s
     Running `target\debug\hello_cargo.exe`
Hello, Rust world!

? 這里我們看到結(jié)果里面有CompilingFinished、Running 字樣,所以我們知道這次它重新編譯了該項(xiàng)目,并執(zhí)行了可執(zhí)行文件,打印出了新的結(jié)果:Hello, Rust world! 。

5、檢查代碼是否可編譯

? 接下來我們認(rèn)識(shí)應(yīng)該新的命令cargo check , 該命令可以快速檢查代碼確??梢跃幾g,但并不產(chǎn)生可執(zhí)行文件:

Checking hello_cargo v0.1.0 D:\RustLang\RustWorkSpace\hello_cargo)
Finished dev [unoptimized + debuginfo] target(s) in 0.07s

如果一切順利控制臺(tái)會(huì)出現(xiàn)以上結(jié)果。

? 到了這里可能有人會(huì)問,為什么不直接執(zhí)行 cargo buildcargo run 命令呢?這樣還可以直接生成可執(zhí)行文件,多方便。

對(duì)于一個(gè)合格的新時(shí)代農(nóng)民,我們應(yīng)該持續(xù)定期去檢查我們的“莊稼”,讓它們可以健康成長(zhǎng),這樣我們才可以迎來大豐收。不然我們可能會(huì)餓肚子!

? 所以我們要習(xí)慣使用cargo check 定期檢查我們的代碼是否可編譯,避免不必要的后顧之憂。

6、發(fā)布(release)構(gòu)建

? 當(dāng)項(xiàng)?最終準(zhǔn)備好發(fā)布時(shí),可以使? cargo build --release 來優(yōu)化編譯項(xiàng)?。這會(huì)在target/release ?不是 target/debug 下?成可執(zhí)??件。這些優(yōu)化可以讓 Rust 代碼運(yùn)?的更快,不過啟?這些優(yōu)化也需要消耗更?的編譯時(shí)間。這也就是為什么會(huì)有兩種不同的配置:?種是為了開發(fā),你需要經(jīng)??焖僦匦聵?gòu)建;另?種是為?戶構(gòu)建最終程序,它們不會(huì)經(jīng)常重新構(gòu)建,并且希望程序運(yùn)?得越快越好。如果你在測(cè)試代碼的運(yùn)?時(shí)間,請(qǐng)確保運(yùn)? cargo build --release 并使? target/release 下的可執(zhí)??件進(jìn)?測(cè)試。

? 對(duì)于運(yùn)行發(fā)行版本我們可以使用 cargo run --release 命令

 Finished release [optimized] target(s) in 0.01s
     Running `target\release\hello_cargo.exe`
Hello, Rust world!

7、把Cargo當(dāng)作習(xí)慣

? 對(duì)于簡(jiǎn)單項(xiàng)目,Cargo并不比rustc提供了更多的優(yōu)勢(shì),不過隨著開發(fā)深入,最終會(huì)證明它的價(jià)值,?旦程序壯?到由多個(gè)?件組成,亦或者是需要其他的依賴,讓 Cargo 協(xié)調(diào)構(gòu)建過程就會(huì)簡(jiǎn)單得多。

? 即便 hello_cargo 項(xiàng)??分簡(jiǎn)單,它現(xiàn)在也使?了很多在你之后的 Rust ?涯將會(huì)?到的實(shí)??具。其實(shí),要在任何已存在的項(xiàng)?上?作時(shí),可以使?如下命令通過 Git 檢出代碼,移動(dòng)到該項(xiàng)??錄并構(gòu)建:

git clone example.com/test_project
cd test_project
cargo build

了解更多關(guān)于Cargo可以查閱Cargo相關(guān)文檔

8、總結(jié)

本章我們學(xué)習(xí)了Cargo的相關(guān)內(nèi)容:

  • 使用 cargo new 創(chuàng)建項(xiàng)目
  • 使用 cargo build 構(gòu)建項(xiàng)目
  • 使用 cargo run 一步構(gòu)建并運(yùn)行項(xiàng)目
  • 使用 cargo check 在不生成二進(jìn)制文件的情況下檢查項(xiàng)目是否可編譯
  • 使用 cargo build --release 構(gòu)建項(xiàng)目發(fā)行版本
  • 使用 cargo run --release 運(yùn)行發(fā)行版本,可測(cè)試發(fā)布版本的運(yùn)行時(shí)間

使? Cargo 的?個(gè)額外的優(yōu)點(diǎn)是,不管你使?什么操作系統(tǒng),其命令都是?樣的。所以從現(xiàn)在開始本書將不再為 Linux 和 macOS 以及 Windows 提供相應(yīng)的命令。

到此這篇關(guān)于Rust中Cargo的使用的文章就介紹到這了,更多相關(guān)Rust Cargo的使用內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Rust中引用的具體使用

    Rust中引用的具體使用

    在Rust語言中,引用機(jī)制是其所有權(quán)系統(tǒng)的重要組成部分,ust提供了兩種類型的引用,不可變引用和可變引用,本文就來詳細(xì)的介紹一下這兩種的用法,感興趣的可以了解一下
    2024-03-03
  • rust生命周期詳解

    rust生命周期詳解

    生命周期是rust中用來規(guī)定引用的有效作用域,在大多數(shù)時(shí)候,無需手動(dòng)聲明,因?yàn)榫幾g器能夠自動(dòng)推導(dǎo),這篇文章主要介紹了rust生命周期相關(guān)知識(shí),需要的朋友可以參考下
    2023-03-03
  • Rust中的Copy和Clone對(duì)比分析

    Rust中的Copy和Clone對(duì)比分析

    這篇文章主要介紹了Rust中的Copy和Clone及區(qū)別對(duì)比分析,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2023-04-04
  • 深入了解Rust中的枚舉和模式匹配

    深入了解Rust中的枚舉和模式匹配

    這篇文章主要為大家詳細(xì)介紹了Rust中的枚舉和模式匹配的相關(guān)知識(shí),文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下
    2024-01-01
  • Rust語言和C/C++區(qū)別對(duì)比,Rust和C語言哪個(gè)好

    Rust語言和C/C++區(qū)別對(duì)比,Rust和C語言哪個(gè)好

    Rust具有與C語言相當(dāng)?shù)乃俣群蛢?nèi)存效率,但無需手動(dòng)內(nèi)存管理或垃圾回收,它擁有出色的工具支持、友好的編譯器和不斷發(fā)展的開發(fā)者社區(qū),使用Rust能提升程序性能,最重要的是,對(duì)Python開發(fā)者而言,Rust比C語言更容易學(xué)習(xí)
    2025-02-02
  • Rust自定義安裝路徑的詳細(xì)圖文教程

    Rust自定義安裝路徑的詳細(xì)圖文教程

    工欲善其事必先利其器,無論是對(duì)小白還是大神來說,想要學(xué)習(xí) Rust 第一步那必須是 Rust 的環(huán)境配置,下面這篇文章主要給大家介紹了關(guān)于Rust自定義安裝路徑的詳細(xì)圖文教程,需要的朋友可以參考下
    2023-03-03
  • Rust處理命令行參數(shù)

    Rust處理命令行參數(shù)

    在Rust中,命令行參數(shù)是程序從命令行接收的輸入,它們?yōu)槌绦蛱峁┝诉\(yùn)行時(shí)配置和數(shù)據(jù)的靈活性,本文就來介紹一下Rust處理命令行參數(shù),具有一定的參考價(jià)值,感興趣的可以了解一下
    2024-03-03
  • Rust?use關(guān)鍵字妙用及模塊內(nèi)容拆分方法

    Rust?use關(guān)鍵字妙用及模塊內(nèi)容拆分方法

    這篇文章主要介紹了Rust?use關(guān)鍵字妙用|模塊內(nèi)容拆分,文中還給大家介紹use關(guān)鍵字的習(xí)慣用法,快速引用自定義模塊內(nèi)容或標(biāo)準(zhǔn)庫,以此優(yōu)化代碼書寫,需要的朋友可以參考下
    2022-09-09
  • rust 包模塊組織結(jié)構(gòu)詳解

    rust 包模塊組織結(jié)構(gòu)詳解

    RUST提供了一系列的功能來幫助我們管理代碼,包括決定哪些細(xì)節(jié)是暴露的、哪些細(xì)節(jié)是私有的,以及不同的作用域的命名管理,這篇文章主要介紹了rust 包模塊組織結(jié)構(gòu)的相關(guān)知識(shí),需要的朋友可以參考下
    2023-12-12
  • Rust指南之泛型與特性詳解

    Rust指南之泛型與特性詳解

    泛型機(jī)制是編程語言用于表達(dá)類型抽象的機(jī)制,一般用于功能確定、數(shù)據(jù)類型待定的類,如鏈表、映射表等,這篇文章主要介紹了Rust指南泛型與特性,需要的朋友可以參考下
    2022-10-10

最新評(píng)論