Rust 從入門到精通03-helloworld
- 2022 年 8 月 2 日
- 筆記
- Rust, Rust 從入門到精通
安裝完成 Rust 之後,我們可以編寫 Rust 的 Hello Word。這裡介紹兩種方式,一種是rust原生方式,一種是利用 cargo 工具(重要)
1、rustc 方式
1.1 創建項目目錄
rust 運行不關心程式碼存放的目錄,我們可以任意選擇一個合適的位置,創建一個目錄。
比如:我們創建一個目錄名稱為 rust_helloword
mkdir rust_helloword
1.2 編寫rust程式
rust 的源文件後綴是 .rs 。所以我們在第一個創建的項目目錄下,創建一個 main.rs 文件。
然後在 main.rs 文件中寫入如下程式碼:
fn main(){
println!("Hello World!");
}
1.3 編譯並運行 rust 程式
在創建的 main.rs 文件目錄下,輸入如下命令:
①、編譯
rustc main.rs
執行之後,會在當前目錄下生成一個 main 的可執行文件。
PS:windows 是生成 main.exe 可執行文件;Linux/Mac 是生成 main 文件。
②、運行
./main
運行之後會在窗口列印出 Hello World!
至此,我們完成了第一個 Rust 程式的編寫。
2、cargo方式
cargo 英文文檔://doc.rust-lang.org/cargo/
cargo中文文檔://cargo.budshome.com/index.html
Cargo 是 Rust 的構建系統和包管理器。大多數 Rustacean(這個詞是從甲殼綱動物這個單詞Crustacean[[krʌ’steʃən]],去掉了首字母C,而演變而來的,表示 rust 開發者) 使用 Cargo 來管理 Rust 項目,因為它可以為你處理很多任務,比如構建程式碼、下載依賴庫並編譯這些庫。
在編寫更加複雜的 rust 程式時,會用到很多依賴項,如果使用 Cargo 來啟動項目,會簡單很多。
2.1 檢查cargo安裝
注意:在安裝 rust 時,我們是安裝的 rustup,這會自動安裝 Cargo,所以我們這裡不介紹如何安裝 cargo。
cargo –version
出現如下介面:
分別是 cargo 【版本號】(【哈希碼】 【發布時間】)
2.2 創建項目
輸入如下命令:
cargo new hello_cargo
該命令會自動創建一個 hello_cargo 目錄,裡面包含兩個文件和一個目錄:一個 Cargo.toml 文件,一個 src 目錄,以及位於 src 目錄中的 main.rs 文件。
2.3 文件介紹
①、Cargo.toml
[package]
name = "hello_cargo"
version = "0.1.0"
authors = ["Your Name <[email protected]>"]
edition = "2018"
[dependencies]
這是 Cargo的配置文件,使用 TOML (Tom’s Obvious, Minimal Language)語法
第一行,[package]
,是一個片段(section)標題,表明下面的語句用來配置一個包。隨著我們在這個文件增加更多的資訊,還將增加其他片段(section)。
接下來的四行設置了 Cargo 編譯程式所需的配置:項目的名稱、版本、作者以及要使用的 Rust 版本。Cargo 從環境中獲取你的名字和 email 資訊,所以如果這些資訊不正確,請修改並保存此文件。
最後一行,[dependencies]
,用於書寫項目的依賴包(類似Maven、Gradle裡面編寫的依賴)。在 Rust 中,程式碼包被稱為 crates。這個項目並不需要其他的 crate。
②、src/main.rs
fn main() {
println!("Hello, world!");
}
Cargo 為我們生成了一個 「Hello, world!」 程式,rust 原生方式與 Cargo 生成項目的區別是 Cargo 將程式碼放在 src 目錄,同時項目根目錄包含一個 Cargo.toml 配置文件。
Cargo 期望源文件存放在 src 目錄中。項目根目錄只存放 README、license 資訊、配置文件和其他跟程式碼無關的文件。使用 Cargo 幫助你保持項目乾淨整潔,一切井井有條。
如果沒有使用 Cargo 開始項目,比如我們創建的 Hello,world! 項目,可以將其轉化為一個 Cargo 項目:將程式碼放入 src 目錄,並創建一個合適的 Cargo.toml 文件。
2.4 構建並運行項目
①、構建項目
cargo bulid
這個命令會創建一個可執行文件 target/debug/hello_cargo (在 Windows 上是 target\debug\hello_cargo.exe),而不是放在當前目錄下。
②、運行
執行運行上一步生成的可執行文件即可。
如果一切順利,終端上應該會列印出 Hello, world!
。首次運行 cargo build
時,也會使 Cargo 在項目根目錄創建一個新文件:Cargo.lock。這個文件記錄項目依賴的實際版本。這個項目並沒有依賴,所以其內容比較少。
原則上自己永遠也不需要碰這個文件,讓 Cargo 處理它就行了。
2.5 cargo run
我們剛剛使用 cargo build
構建了項目,並使用 ./target/debug/hello_cargo
運行了程式,也可以使用 cargo run
在一個命令中同時編譯並運行生成的可執行文件:
注意這一次並沒有出現表明 Cargo 正在編譯 hello_cargo
的輸出。Cargo 發現文件並沒有被改變,就直接運行了二進位文件。如果修改了源文件的話,Cargo 會在運行之前重新構建項目,並會出現像這樣的輸出:
2.6 cargo check
cargo check 該命令可以快速檢查程式碼確保其可以進行編譯,但是不產生可執行文件。
為什麼你會不需要可執行文件呢?
通常 cargo check
要比 cargo build
快得多,因為它省略了生成可執行文件的步驟。如果你在編寫程式碼時持續的進行檢查,cargo check
會加速開發!為此很多 Rustaceans 編寫程式碼時定期運行 cargo check
確保它們可以編譯。當準備好使用可執行文件時才運行 cargo build
。
2.7 發布(release)構建
當項目最終準備好發布時,可以使用 cargo build --release
來優化編譯項目。這會在 target/release 而不是 target/debug 下生成可執行文件。這些優化可以讓 Rust 程式碼運行的更快,不過啟用這些優化也需要消耗更長的編譯時間。這也就是為什麼會有兩種不同的配置:一種是為了開發,你需要經常快速重新構建;
另一種是為用戶構建最終程式,它們不會經常重新構建,並且希望程式運行得越快越好。
如果你在測試程式碼的運行時間,請確保運行 cargo build --release
並使用 target/release 下的可執行文件進行測試。
3、總結
對於簡單項目, Cargo 並不比 rustc
提供了更多的優勢,不過隨著開發的深入,其優勢會越來越大。對於擁有多個 crate 的複雜項目,交給 Cargo 來協調構建將簡單的多。
所以我們在開發過程中要將 Cargo 當做習慣。