[TOC]
Rust的開發環境與工具
開發環境安裝
無論使用何種系統, 均可以根據 Rust 官方網站提供的 rustup-init 工具完成 Rust 的安裝. rustup-init 下載地址:
https://www.rust-lang.org/zh-CN/tools/install.
網站會自動識別你的操作系統并給出提示, 遵循網站提示一步一步執行即可.
當安裝完成后, 可使用以下命令進行測試, 如果正確輸出版本號則表明安裝已經成功.
$ rustc --version
- Tips:如果你使用的是 Linux 系統, 那么在 rustup-init 運行完成后它會在命令行中提示你將軟件安裝目錄加入 PATH 環境變量中. 對于 Windows 系統來說不需要這一步.
開發工具
使用 vscode 并配置 rust-analyzer 插件在目前看來是一個比較好的選擇.
- 安裝 vscode
- 在 vscode 的插件市場中, 安裝 rust-analyzer 插件
rust-analyzer 包含代碼提示, 代碼檢查, 自動補全等多種功能. 你可能會注意到在插件市場中存在一個標了小星星的名字就叫 Rust 的插件, 它的下載量與安裝量都遠遠高于 rust-analyzer, 那么為什么不選擇使用它呢? 因為這個排名第一的 Rust 插件底層使用的是名為 rls 的 Rust 前端, 由于 rls 本身性能過于捉急, 在 2020 年的時候社區推出了 rust-analyzer 項目并旨在全面替換掉 rls. 在體驗上, rust-analyzer 要遠遠好于 rls.
Hello World
Cargo 是 Rust 默認的項目管理工具, 它幾乎會貫穿你的整個 Rust 開發周期, 包括項目的創建, 引入第三方庫, 編譯, 測試和運行等. 使用如下命令可以創建一個新的 Rust 工程,rust-learn為工程名稱:
$ cargo new rust-learn
- Cargo 默認會攜帶
--bin
參數, 這意味著該項目是一個二進制程序. 如果要創建一個庫, 我們需要傳遞--lib
.
生成的項目目錄結構如下:
.
├── Cargo.toml
└── src
└── main.rs
- Cargo.toml 是項目的描述文件, 它里面保存了項目的依賴庫, 項目的名稱, 版本號等信息
- src 是源碼目錄
- src/main.rs 是項目的入口點
Cargo.toml的內容:
[package]
name = "rust-learn" # 項目名稱
version = "0.1.0" # 版本號
edition = "2018" # 最新的rust edition版本,即語法穩定版本
# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
# 依賴聲明
[dependencies]
main.rs的內容:
fn main() {
println!("Hello, world!");
}
使用如下命令可以編譯并運行項目:
$ cd rust-learn
$ cargo run
Compiling rust-learn v0.1.0 (W:\WorkSpace\Rust\rust-learn)
Finished dev [unoptimized + debuginfo] target(s) in 0.79s
Running `target\debug\rust-learn.exe`
Hello, world!
Cargo 里面有許多有用的命令, 一些常用的命令包括:
-
cargo new
生成新的項目模板 -
cargo build
構建項目, 生成可執行文件或依賴 -
cargo run
構建并運行項目 -
cargo test
運行測試用例 -
cargo check
檢查項目代碼, 由于 Rust 編譯較慢, 因此在開發中常用 check 代替 build 命令 -
cargo doc
生成項目文檔 -
cargo publish
將庫發布到 crates.io
除了以上 cargo 自帶的命令外, cargo 還支持安裝額外的擴展命令, 例如格式化工具. rustfmt 是一個可以自定義風格的 rust 代碼格式化工具, 使用如下命令安裝它:
$ rustup component add rustfmt
在項目根目錄輸入以下命令, 會自動格式化項目內的全部 Rust 源文件:
$ cargo fmt
由于某些眾所周知的原因,一般我們還需要配置一下 cargo
的國內鏡像源。找到 $HOME/.cargo
目錄,如果該目錄下存在 config
文件則修改,否則創建 config
文件,文件內容如下:
[source.crates-io]
registry = "https://github.com/rust-lang/crates.io-index"
# 指定鏡像
replace-with = 'sjtu' # 如:tuna、sjtu、ustc,或者 rustcc
# 注:以下源配置一個即可,無需全部
# 中國科學技術大學
[source.ustc]
registry = "https://mirrors.ustc.edu.cn/crates.io-index"
# 上海交通大學
[source.sjtu]
registry = "https://mirrors.sjtug.sjtu.edu.cn/git/crates.io-index/"
# 清華大學
[source.tuna]
registry = "https://mirrors.tuna.tsinghua.edu.cn/git/crates.io-index.git"
# rustcc社區
[source.rustcc]
registry = "https://code.aliyun.com/rustcc/crates.io-index.git"