首頁 > 軟體

使用Cargo工具高效建立Rust專案

2022-08-11 18:00:15

前言

本文緊跟上篇Rust博文內容,講解Cargo工具在Rust專案建立時的妙用,手把手教你使用Cargo工具在黑視窗建立專案。此外,建立專案之後,簡單的做一個Rust語言中輸入輸出的測試,上文提到學好Rust語言的方法就是一步一步打基礎,因此仍要潛心修煉,打牢基礎。

一、功能強大的Cargo工具

1、Cargo工具是什麼?

  • Cargo是Rust 的構建系統和包管理工具,主要功能包括:
    • 建立和管理 Rust 的模組系統
    • 下載和管理依賴庫
    • 呼叫rustc或其他構建工具來構建專案
  • 安裝Rust 的時候會自動安裝Cargo
    • 驗證的命令:cargo --version

2、使用Cargo命令建立 hello_cargo 專案

命令:cargo new hello_cargo

其中code .是VSC工具的命令,意思是使用他來開啟專案檔案:

可以看到Cargo工具為我們生成了其他的檔案,具體看一下都是什麼作用:

自動建立了一個新目錄hello_cargo,包含:

  • Cargo.toml
  • src目錄
    • main.rs
  • 初始化了一個新的Git倉庫:.gitignore
    • 可以使用其他的vcs(版本控制系統)
    • 或者不適用vcs:cargo new 專案名 --vcs

3、專案檔案目錄裡各檔案的內容和特點

  • Cargo.toml
  • TOML(Tom’s Obvious,Minimal Language)格式,存放Cargo的設定

  • [package],是一個區域標題,表示下方內容是用來設定包的(package)
  • name:專案名
  • version:專案版本
  • edition:使用的Rust版本
  • [dependencies]
  • 另一個區域的開始,它會列出專案的依賴項。
  • 在Rust裡,程式碼的包寫做:crate

2.src/main.rs

  • cargo生成的 main.rs 在src目錄下,此外原始碼都應該放在src目錄下
  • 而cargo.toml在專案頂層下
  • 頂層目錄可以放置:RENAME、許可資訊、組態檔等
  • 將非cargo建立的專案轉化為cargo的方法:
  • 把原始碼移動到src裡面
  • 建立cargo.toml並填寫相應的設定

3.Cargo.lock

  • 第一次執行Cargo build命令會在頂層目錄生成 cargo.lock檔案
  • 該檔案負責追蹤專案依賴的精確版本
  • 不需要手動修改此檔案

4、Cargo 常用命令

  • cargo build
  • 建立可執行檔案:targetdebughello_cargo.exe
  • cargo run
  • 構建和執行cargo專案,編譯程式碼+執行結果
  • 如果之前編譯過且原始碼沒有發生改變,則會直接執行二進位制檔案
  • cargo check
  • 檢查程式碼,確保能夠通過編譯,但是不產生任何可執行檔案
  • cargo check 要比 cargo build 快得多
  • 編寫程式碼得時候可以週期性得使用cargo check命令檢查程式碼,提高效率
  • cargo build --release
  • 一共兩種設定:
  • 開發使用 :cargo build
  • 正式釋出: cargo build --release
  • 為釋出構建,編譯時會進行優化
  • 程式碼執行速度會更快,但是編譯時間長
  • 會在target/release 目錄下生成可執行檔案,而不是 target/debug

二、Rust 語言的輸入輸出

1、輸入輸出測試

原始碼:

use std::io;
fn main() {
    println!("測試輸入輸出功能");
    println!("從鍵盤輸入一個數位:");

    let mut a=String::new();

    io::stdin().read_line(&mut a).expect("無法讀取行");
    
    println!("輸出結果為:{}",a);
}

執行效果:

2、具體程式碼解析

接下來把不熟悉的程式碼依次解釋:

let mut a=String::new();
 

let用來宣告變數,mut代表該變數值可修改,String::new()意思是呼叫String類的範例。

  • 在Rust 中預設變數不可修改,加上mut 才可以被修改
  • new 在Rust 中常用來建立型別範例
  • 這句話的意思就是將一個空白的字串繫結到可變的字串變數a上
use std::io;
io::stdin().read_line(&mut a).expect("無法讀取行");

use用來引入庫,std::io在Rust 中代表標準的輸入輸出,整體可理解為c中的#include<stdio.h>
在io庫呼叫stdin()類裡的read_line()方法,而該方法需要傳入可變字串,因此將 &mut a傳入,
為什麼要加地址符&呢,這裡啊用到了C++裡的參照,這樣參數列裡字串的變化會修飾實參a的變化,且不會產生副本,安全高效。最後還有一個ecpect()方法,read_line()方法會返回一個Result列舉型別,含有Ok 和 Err 兩個變體。

  • 如果Result返回的是Err,那麼expect()方法就會中斷整行程式碼並列印expect裡的資訊。
  • 如果返回的是OK,那麼就會把read_line()方法中得到的值賦給OK一併返回給使用者。
println!("輸出結果為:{}",a);

類似於c 裡的 printf("輸出結果為%d",a);上面的{}是一個預留位置,輸出的時候會被後面變數的值取代,有幾個{}後面就有多少變數。

到此這篇關於使用Cargo工具高效建立Rust專案的文章就介紹到這了,更多相關Rust輸入輸出語句內容請搜尋it145.com以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援it145.com!


IT145.com E-mail:sddin#qq.com