[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"