Rust編程語言學習
嘗試學習Rust很久了,但一直都是在Rust語言的大門外張望,頗有葉公好龍之意。
這一次準備參考下列書籍,認真的系統學習一遍Rust:
- 《The Rust Programming Language》
- 《The Rust Reference》
- 《Rust by Example》
- 《Learn Rust With Entirely Too Many Linked Lists》
學習過程中的一些經驗和理解會通過博客的方式進行記錄,本文爲這個系列博客的序言和目錄。
1. Rust編程語言是什麼
拋去開發歷史等周邊信息,我選擇了幾個關鍵詞來快速建立對於Rust的印象:
- 系統編程語言(除web與遊戲開發等領域,還可用於操作系統開發、嵌入式開發和驅動開發等領域)
- 高性能(無GC與零成本抽象,理論性能與C相同,部分benchmark中超過C)
- 可靠性(內存安全與線程安全)
- 生產力(出色的文檔、一流的包管理器和構建工具、豐富的第三方包、活躍且強大的社區)
2. 如何安裝Rust編程語言
Rust的安裝與管理使用的是一個叫做rustup的工具,這是Rust官方提供和維護的一個強大的工具。
使用rustup可以在同一臺電腦上同時安裝多個不同版本的rust,並根據需要進行靈活的切換和使用。
2.1 安裝前的配置工作
根據需要指定安裝路徑與倉庫鏡像地址
2.1.1 rustup安裝路徑配置
在安裝一個新軟件的時候,我們往往需要指定軟件的安裝路徑,rustup的安裝路徑是通過下面兩個環境變量指定的:
- CARGO_HOME
- RUSTUP_HOME
2.1.2 倉庫鏡像配置
由於國家網絡管理政策的限制,在直接訪問rustup的倉庫進行軟件安裝時,網速會很慢且很不穩定,這個時候我們需要配置國內的倉庫鏡像地址。
Rust 靜態文件鏡像地址的配置通過下面兩個環境變量指定:
- RUSTUP_DIST_SERVER
- RUSTUP_UPDATE_ROOT
Rust Crates 鏡像通過$CARGO_HOME/config文件進行配置:
[source.crates-io]
registry = "https://github.com/rust-lang/crates.io-index"
replace-with = 'ustc'
[source.ustc]
registry = "http://mirrors.ustc.edu.cn/crates.io-index"
詳細的幫助穩定參考:
2.2 Linux和macOS上安裝rustup
下載並安裝rustup
curl https://sh.rustup.rs -sSf | sh
配置環境變量(將下面兩條命令的任意一條加到~/.bash_profile即可)
source $HOME/.cargo/env
export PATH="$HOME/.cargo/bin:$PATH"
2.3 Windows上安裝rustup
相比於Linux和macOS,Windows上安裝rustup會相對比較複雜。
2.3.1 GNU與MSVC版本的抉擇
版本 | 優點 | 缺點 |
---|---|---|
GNU | 調試功能完善 | 需要安裝與配置Mingw64工具鏈 |
MSVC | 安裝配置簡單 | 需要安裝Visual Studio,目前不支持調試 |
2.3.2 安裝命令與開發環境配置
官網 https://rustup.rs 上下載 rustup‑init.exe,運行後根據命令行提示一步步完成安裝即可。
詳細的開發環境配置參考文檔:
2.4 安裝後的驗證
安裝完成後,可以通過如下命令驗證rust是否安裝成功:
rustup show
rustc --version
cargo --version
2.5 beta與nightly版本安裝
beta與nightly版本相當於rust的測試與開發版本,可以使用如下命令安裝:
rustup toolchain install beta
rustup toolchain install nightly
2.6 額外組件安裝
rust官方提供了很多很有用的組件,如rustfmt可用於格式化代碼和統一代碼風格,clippy可以用於找出代碼中編寫不規範的地方並提供修改意見。
這些組件的安裝命令爲:
rustup component add rustfmt
rustup component add rustfmt --toolchain nightly
2.6 版本更新
rust的更新使用rustup完成:
rustup update
3. 項目創建與運行
以最常見的hello world程序爲例,演示rust編程語言的項目創建和運行流程。
rust項目的創建、管理和運行都是使用cargo包管理器進行。
cargo包管理器的詳細使用指導可參考The Cargo Book。
3.1 創建項目
創建項目的命令爲:
cargo new hello_world
此命令默認創建一個可執行程序項目,若需要創建lib項目,添加–lib選項即可。
創建完成後,可以觀察一下項目的文件結構:
- src文件夾下爲項目源碼
- Cargo.toml文件存放項目的元數據和依賴描述信息
- .gitignore文件包含rust項目常用的版本管理文件忽略清單
3.2 運行項目
格式化項目代碼
cargo fmt
檢查項目代碼
cargo check
詳細檢查項目代碼規範
cargo clippy
編譯項目
cargo build [--release]
運行項目
cargo run [--release]
測試項目
cargo test