精品国产人成在线_亚洲高清无码在线观看_国产在线视频国产永久2021_国产AV综合第一页一个的一区免费影院黑人_最近中文字幕MV高清在线视频

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

如何安裝和使用cargo

科技綠洲 ? 來源:TinyZ ? 作者:TinyZ ? 2023-09-20 11:28 ? 次閱讀

Cargo是Rust語言的包管理器和構建工具。它能夠幫助我們管理依賴、構建項目、運行測試和發布程序等。在Rust社區中,Cargo已經成為了標準的構建工具,它為Rust的開發者提供了極大的便利。

安裝和使用 cargo

在安裝Rust時,Cargo也已經隨之安裝。 如果你還沒有安裝Rust,可以參考系列教程的第一篇 Rust語言從入門到精通系列 - Hello World!, 也可以前往官網 下載安裝包進行安裝。 安裝完成后,可以通過以下命令來檢查Cargo是否安裝成功:

cargo --version
# cargo 1.68.0 (115f34552 2023-02-26)

輸出了Cargo的版本號,說明安裝成功。環境檢查完成,下面開始Cargo的學習。

我們先回顧一下上一篇文章中使用過的Cargo命令。 第一個使用Cargo命令是"cargo new", 創建了我們的第一個Rust項目。沒看過第一篇的同學可以嘗試如下命令創建:

cargo new hello_world

這條命令會在當前目錄下創建一個名為hello_world的新項目。其中,hello_world是項目的名稱,可以根據自己的需要進行修改。 創建完成后,打開項目的目錄hello_world。

目錄結構如下圖所示:

/
├── Cargo.lock
├── Cargo.toml
├── crate-information.json
├── src/
│   ├── main.rs
└── target/
└── tools/

Cargo生成的最基本的項目結構,包括src目錄(用于存放開發的源代碼)和Cargo.toml文件(管理項目元數據、編譯構建、第三方庫依賴等等)。

在src目錄下,我們看到一個名為main.rs的文件,它是Rust程序的入口文件,內部實現一個默認的main()方法:

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

在main()方法體中輸入 println!("Hello, world!"); 這就是一個非常簡單的程序,它的功能是再命令提示符窗口打印輸出一句話“Hello, world!”。在VS Code中按 F5 運行你的第一個程序吧。

假如你沒有配置VS Code啟動配置,那么再運行程序之前,Cargo會先使用build命令來構建項目,生成可執行文件。 至此,我們又新接觸了一個cargo命令 build:

cargo build

cargo build 命令會在項目的根目錄下生成一個target目錄,其中包含了構建后的二進制文件。在默認情況下,Cargo會生成一個名為hello_world的二進制文件。

如果只想編譯項目而不生成二進制文件,可以使用以下命令:

cargo check

這條命令會檢查代碼是否可以編譯通過,但不會生成二進制文件。

在構建完成后,我們可以使用以下命令來運行程序:

cargo run

這條命令會自動編譯并運行項目。如果一切正常,你應該能夠看到和Vs Code按F5啟動一樣的“Hello, world!”的輸出。

常用指令

上一小節,我們使用了Cargo的new,build, run, check四個指令,除了這幾個指令外,Cargo 還提供了更多的指令,下面列舉并注釋其中最常用的一些指令:

  • ? new: 指令可以創建一個新的 Rust 項目。它有兩個參數,第一個參數是項目名稱,第二個參數是項目類型,可以是 bin 或 lib。默認情況下,new 會創建一個二進制bin項目。
  • ? init: 指令可以將當前目錄初始化為一個 Rust 項目。它會創建一個默認的 src 目錄和 Cargo.toml 文件。
  • ? check: 指令可以檢查代碼是否可以編譯通過,但 不會生成二進制文件
  • ? build: 指令可以編譯 Rust 項目,并生成二進制文件。如果項目已經編譯過,build 指令會跳過編譯過程。
  • ? run: 指令可以編譯并運行 Rust 項目。如果項目已經編譯過,run 指令會跳過編譯過程。
  • ? test: 指令可以運行項目中的測試。測試代碼通常放在 src/test.rs 或 src/lib.rs 中。
  • ? bench: 指令可以運行項目中的基準測試。基準測試用來測試代碼的性能。
  • ? doc: 指令可以生成項目的文檔。文檔通常使用 Rust 內置的文檔工具 rustdoc 來生成。
  • ? clean: 指令可以清除項目的構建文件和生成的二進制文件。
  • ? update: 指令可以更新項目中的依賴。
  • ? publish: 指令可以將項目發布到 crates.io 上,供其他人使用。

更多指令可以通過 cargo --help 或 cargo --help 查看。

自定義擴展指令

依賴管理

在Rust項目中,我們可以使用Cargo來管理依賴。可以通過編輯Cargo.toml文件來添加依賴。 例如,我們想要使用rand庫來生成隨機數,可以在Cargo.toml文件中添加以下內容:

[dependencies]
rand = "0.8.4"

這條語句告訴Cargo,我們需要使用rand庫,并且希望使用版本號為0.8.4的版本。在保存文件后,可以使用以下命令來安裝依賴:

cargo build

這條命令會自動下載并安裝依賴。 在代碼中使用依賴時,我們需要在main.rs文件中添加以下語句:

use rand::Rng;

fn main() {
    let mut rng = rand::thread_rng();
    let n: u8 = rng.gen();
    println!("Random number: {}", n);
}

這里,我們使用了rand庫中的Rng trait和thread_rng函數來生成隨機數。

版本號控制

上面的示例我們引入了指定0.8.4版本的rand庫依賴,并在命令提示符中打印了隨機數。這里我們進一步對依賴管理進行學習。

除了指定依賴的特定版本外,我們還可以使用邏輯運算符控制版本范圍, 具體如下:

  • ? =: 等于某個版本。等同于直接填寫版本號
  • ? >: 大于某個版本。
  • ? <=: 小于等于某個版本。
  • ? : 大約等于某個版本,例如1.2.3表示大約等于1.2.3,但是允許最后一位數字不同,例如1.2.4。
  • ? ^: 兼容某個版本,例如^1.2.3表示兼容1.2.x系列的所有版本,但是不兼容2.0.0及以上版本。

假如我們想指定依賴庫的版本號大于等于0.7.3版本 且 小于0.8.4,示例:

[dependencies]
rand = " >=0.7.3, < 0.8.4"

指定依賴項的特性

有些庫提供了多個特性,可以用來啟用或禁用某些功能。例如,serde庫提供了一個名為derive的特性,用于啟用派生宏。為了指定依賴項的特性,可以使用如下語法:

[dependencies]
庫名稱 = { version = "版本號", features = ["特性名稱"] }

log是一個用于日志記錄的庫。它提供了多個特性,可以用來啟用或禁用某些功能。下面是一些常見的特性及其用途:

  • ? std: 用于啟用log的標準庫支持,可以在標準庫環境中使用log。
  • ? env_logger: 用于啟用log的環境變量支持,可以使用環境變量來控制日志輸出。
  • ? log4rs: 用于啟用log的log4rs支持,可以使用log4rs庫來配置日志輸出。
  • ? simplelog: 用于啟用log的simplelog支持,可以使用simplelog庫來配置日志輸出。

下面是一個示例:

[dependencies]
log = { version = "0.4", features = ["std"] }

除了啟用特性之外,還可以禁用特性,例如:

[dependencies]
log = { version = "0.4", default-features = false }

指定依賴項的路徑

在某些情況下,我們可能需要使用本地文件系統中的庫。為了指定依賴項的路徑,可以使用如下語法:

[dependencies]
rand = { path = "../rand" }

在這個例子中,我們指定了一個名為rand的庫,路徑為../rand。這告訴Cargo編譯器,我們的項目需要使用本地文件系統中的rand庫。當我們運行cargo build命令時,Cargo會自動編譯指定路徑下的rand庫,并將它添加到我們的項目中。

除了使用本地文件系統中的庫之外,我們還可以使用git倉庫中的庫。為了指定依賴項的git倉庫,可以使用如下語法:

[dependencies]
rand = { git = "https://github.com/rust-lang-nursery/rand.git" }

項目元數據

本文的前面章節介紹了Cargo的常用質量,依賴管理特性。本小節主要講解Cargo.toml文件中定義的程序元數據,例如:程序的名稱、版本號、作者和描述等信息

[package]
##    項目名(程序名稱)
name = "hello_world"
##    版本號
version = "0.1.0"
##    作者, 多個按逗號分隔
authors = ["Your Name < your_email@example.com >"]
##    項目描述
description = "A hello world program in Rust."
##    Rust語言的版本,目前支持2015、2018和2021 三個版本。
edition = "2021"

除了基礎的元數據外,我們還可以在[package.metadata]下自定義專屬的元數據:

[package.metadata]
url = "https://github.com/username/hello-world"
doc = "https://docs.rs/hello-world"
repository = "https://github.com/username/hello-world.git"

總結

通過本文的介紹,我們了解了Rust語言的包管理器和構建工具Cargo。學習了如何創建一個新的Rust項目、編寫Rust程序、構建和運行程序、添加依賴等操作。

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 安裝
    +關注

    關注

    2

    文章

    97

    瀏覽量

    22187
  • 程序
    +關注

    關注

    115

    文章

    3719

    瀏覽量

    80355
  • 管理器
    +關注

    關注

    0

    文章

    239

    瀏覽量

    18434
  • rust語言
    +關注

    關注

    0

    文章

    57

    瀏覽量

    2988
收藏 人收藏

    評論

    相關推薦

    如何在Rust中連接和使用MySQL數據庫

    如何在Rust中連接和使用MySQL數據庫。 安裝 mysql 模塊 這里我們假設你已經安裝了Rust編程語言工具鏈,在本教程中,我們將使用 mysql crate來連接和使用MySQL數據庫。要安裝
    的頭像 發表于 09-30 17:05 ?1403次閱讀

    【MYD-Y6ULX試用體驗】建立開發環境

    ,2018年,RUST官方已正式把嵌入式系統列為主要工作目標,期待RUST的嵌入式開發體驗會有顯著提升。安裝在終端運行$ curl https:// sh.rustup.rs -sSf | sh這將
    發表于 03-27 16:46

    只會用Python?教你在樹莓派上開始使用Rust

    。出現提示時,選擇默認安裝安裝程序將在完成時通知您,盡管安裝可能會花費一些時間,具體取決于您的連接。/p》 安裝安裝成功,但是您還不能開
    發表于 05-20 08:00

    基于matlab約束優化懲罰函數法

    一、簡介clcclear allglobal box; global cargo; global lambda; global num_cargo;global num_box;global
    發表于 08-17 06:01

    如何在STM32 (Cortex M3)和GD32(RISC-V)上用Rust開發

    已經集成了 LLVM,所以本身就可以直接編譯,不需要而外的編譯器。當然,有些 rust 組件安裝還是需要自己電腦上有編譯器的,比如后面會提到的 cargo-binutils。不過在 Windows
    發表于 06-21 10:38

    【沁恒微CH32V307評估板試用體驗】探索Rust編程語言的嵌入式開發——基于CH32V307【1】

    安裝Rustup和Cargo在windows系統中,從官網下載rustup-init.exe,由于默認的msvc需要Visual Studio,所以本機采用mingw的版本,只需要安裝MinGW的gcc
    發表于 07-18 00:37

    如何在構建yocto時將rust和cargo安裝為圖像?

    我正在使用 5.15.72。 當我制作 imx 完整圖像時,我嘗試包括 rust 和 cargo。 你知不知道怎么?
    發表于 05-09 07:10

    pads2007的安裝方法 怎么安裝 無法安裝

    pads2007的安裝方法 怎么安裝  無法安裝:圖解說明,非常詳細
    發表于 12-03 13:01 ?0次下載
    pads2007的<b class='flag-5'>安裝</b>方法 怎么<b class='flag-5'>安裝</b> 無法<b class='flag-5'>安裝</b>

    基于E-CARGO的多任務分配管理

    多任務分配是管理和協同工作中的重要問題。采用E-CARGO建模來解決常規多任務分配問題( GMTAP)與組角色多任務分配問題(GRMTAP)。提出了兩種算法:(l)通過把GMTAP質量評估矩陣轉置
    發表于 11-23 14:58 ?11次下載
    基于E-<b class='flag-5'>CARGO</b>的多任務分配管理

    坐出租車也可購買商品?優步與Cargo正式合作后的計劃

    據VentureBeat北京時間7月20日報道,Uber公布了允許司機在服務期間向乘客銷售商品、賺外快的計劃。這一計劃的公布正值Uber與車內商務創業公司Cargo達成正式合作之際。
    的頭像 發表于 08-05 09:25 ?2235次閱讀

    cargo careful:為你的代碼提供更多安全保證

    cargo careful 就是為了彌補這個差距,它在第一次調用時,會從源代碼構建一個帶有調試斷言的標準庫,然后使用該標準庫運行您的程序或測試套件。
    的頭像 發表于 10-27 09:52 ?405次閱讀
    <b class='flag-5'>cargo</b> careful:為你的代碼提供更多安全保證

    cargo-offline命令解讀

    cargo-offline 命令 cargo-offline 是標準 cargo 命令的包裝器。其被用來,根據·距離 cargo-offline 命令執行目錄最近的
    的頭像 發表于 12-01 15:41 ?974次閱讀

    基于Rust 編程語言的小游戲程序實例

    在編寫程序之前你的電腦必須先安裝好 Rust 的基礎開發環境,并且有 Cargo 支持,如果你是其他編程語言轉過來的例如 C、 Java 、Python 、JavaScript 、Swift 等
    發表于 12-15 10:53 ?1738次閱讀

    Cargo如何訪問世界上最強大的3D庫

    Cargo簡介 用于電影和視頻游戲的高級3D資產在我們的新資產瀏覽器— Cargo中訪問世界上最強大的3D庫 每個套件。每個模型。每種材料。 一個全新的資產瀏覽器加載了你所有的工具包。 ? 完整
    的頭像 發表于 06-19 10:09 ?642次閱讀

    CARGO:改變您使用3D資產的方式

    今天我們發布了Cargo,這款軟件將徹底改變您使用3D資產的方式。Cargo適用于Windows,開箱即用,可與Blender、Unreal、3dsMax 和Maya等3D軟件一起使用。讓我們解開
    的頭像 發表于 06-26 10:08 ?876次閱讀