日本免费高清视频-国产福利视频导航-黄色在线播放国产-天天操天天操天天操天天操|www.shdianci.com

學無先后,達者為師

網站首頁 編程語言 正文

Rust中Cargo的使用詳解_Rust語言

作者:天界程序員 ? 更新時間: 2022-12-11 編程語言

1、cargo簡介

Cargo 是 Rust 的構建系統和包管理器。?多數 Rustacean 們使? Cargo 來管理他們的 Rust 項?,因為它可以為你處理很多任務,?如構建代碼、下載依賴庫并編譯這些庫。(我們把代碼所需要的庫叫做 依賴(dependencies))。

查看cargo版本

cargo --version

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

cargo 1.63.0 (fd9c4297c 2022-07-01)

2、使用cargo創建項目

cargo new hello_cargo
cd hello_cargo

第一行命令,創建了一個名為hello_cargo的目錄和項目。

進入目錄可以看到以下目錄:

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

2.1、關于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], 是一個片段(section)標題,表明下面的語句用來配置一個包。隨著我們在這個文件增加更多的信息,還將增加其他片段(section)接踵而至的3行設置了Cargo編譯程序所需要的配置:name(項目名稱)、version(項目的版本)、edition(使用的Rust版本)
  • 最后一行,[dependcies], 是羅列項目依賴的片段的開始,在Rust中,代碼包被稱為crates。當然在這個項目我們并不需要其他的crate,不過后面我們會用到這個片段。

2.2 、關于src/main.rs

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

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

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

? 當然如果沒有使用Cargo創建的項目,我們也可以轉化為一個Cargo項目,比如我之前的HelloWorld項目。我們可以新建目錄src、新建源文件main.rs在src目錄下、以及創建一個合適的Cargo.toml 文件。

3、構建Cargo項目

我們現在已經使用Cargo創建好了hello_cargo項目,現在我們進入項目目錄

cd hello_cargo

然后我們可以使用Cargo中的build命令開始構建項目

cargo build

執行命令后,會打印出如下結果:

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

到這里我們首次運行cargo build成功,你會發現此時項目目錄中多出了一個target目錄和Cargo.lock文件。

這和前端打包類似,如執行npm run build 命令后npm會默認生成一個dist目錄,里面就是源碼代碼經過編譯和壓縮后可以放在服務器運行的網頁頁面。其中生成的Cargo.lock文件也和package-lock.json類似,不用說Cargo.toml和package.json 對應。

最后我們可以運行構建成功后生成的可執行文件

.\target\debug\hello_cargo.exe

如果一切順利,終端上應該打印出Hello,world!

由于默認的構建?法是調試構建(debug build),Cargo 會將可執??件放在名為 debug 的?錄中。

4、構建并運行Cargo項目

? 在認識了cargo build命令,我們知道它是用來構建Cargo項目的,但是運行項目需要我們自己去target目錄里面去找到可執行文件,并執行它。

? 接下來我們來認識一個新的命令cargo run 。它可以構建并運行構建后的可執行文件。

cargo run 

打印結果:

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

? 相信到了這里,我們心中一定明白這個命令,今后會是我們的長期合作伙伴,魂牽夢縈那種。

? 當然有必要說明一下,因為之前我們已經使用cargo build 命令構建了hello_cargo項目 , 所以此時執行的 cargo run 命令并沒有重新編譯,而是直接運行了可執行文件,打印出了Hello,world!

? 接下來我們看看,改變了源文件在執行該命令會是什么結果:

?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!

? 這里我們看到結果里面有CompilingFinishedRunning 字樣,所以我們知道這次它重新編譯了該項目,并執行了可執行文件,打印出了新的結果:Hello, Rust world!

5、檢查代碼是否可編譯

? 接下來我們認識應該新的命令cargo check , 該命令可以快速檢查代碼確保可以編譯,但并不產生可執行文件:

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

如果一切順利控制臺會出現以上結果。

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

對于一個合格的新時代農民,我們應該持續定期去檢查我們的“莊稼”,讓它們可以健康成長,這樣我們才可以迎來大豐收。不然我們可能會餓肚子!

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

6、發布(release)構建

? 當項?最終準備好發布時,可以使? cargo build --release 來優化編譯項?。這會在target/release ?不是 target/debug 下?成可執??件。這些優化可以讓 Rust 代碼運?的更快,不過啟?這些優化也需要消耗更?的編譯時間。這也就是為什么會有兩種不同的配置:?種是為了開發,你需要經常快速重新構建;另?種是為?戶構建最終程序,它們不會經常重新構建,并且希望程序運?得越快越好。如果你在測試代碼的運?時間,請確保運? cargo build --release 并使? target/release 下的可執??件進?測試。

? 對于運行發行版本我們可以使用 cargo run --release 命令

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

7、把Cargo當作習慣

? 對于簡單項目,Cargo并不比rustc提供了更多的優勢,不過隨著開發深入,最終會證明它的價值,?旦程序壯?到由多個?件組成,亦或者是需要其他的依賴,讓 Cargo 協調構建過程就會簡單得多。

? 即便 hello_cargo 項??分簡單,它現在也使?了很多在你之后的 Rust ?涯將會?到的實??具。其實,要在任何已存在的項?上?作時,可以使?如下命令通過 Git 檢出代碼,移動到該項??錄并構建:

git clone example.com/test_project
cd test_project
cargo build

了解更多關于Cargo可以查閱Cargo相關文檔

8、總結

本章我們學習了Cargo的相關內容:

  • 使用 cargo new 創建項目
  • 使用 cargo build 構建項目
  • 使用 cargo run 一步構建并運行項目
  • 使用 cargo check 在不生成二進制文件的情況下檢查項目是否可編譯
  • 使用 cargo build --release 構建項目發行版本
  • 使用 cargo run --release 運行發行版本,可測試發布版本的運行時間

使? Cargo 的?個額外的優點是,不管你使?什么操作系統,其命令都是?樣的。所以從現在開始本書將不再為 Linux 和 macOS 以及 Windows 提供相應的命令。

原文鏈接:https://blog.csdn.net/qq_36362721/article/details/127647076

欄目分類
最近更新