Rust简介
Rust开发环境
工具链
Rust官方提供了完善的开发工具链。
简单介绍如下:
- rustup:工具链管理器。用于工具链软件的切换和升级。
- rustc:编译器。
- cargo:项目和包管理器。
- xargo:扩展版cargo,支持使用自定义的std库。开发OS必备。
常用命令举例:
# 升级Rust工具链
rustup update
# 设置当前目录默认工具链版本
rustup override set nightly-2018-04-01
# 编译单文件
rustc ... TODO
# 新建Rust库/命令行项目
cargo new --lib/--bin proj_name
# 对当前项目进行构建/运行二进制文件/运行单元测试/运行基准测试/清理
cargo build/run/test/bench/clean
周边辅助工具:
- rustfmt:自动代码格式化
- clippy:静态代码检查
包管理
Rust有完善的包管理模块,集中的包发布平台crates.io
,在线文档平台docs.rs
。
每个项目中都有一个Cargo.toml
文件,记录编译配置和依赖的包。
要使用一个包,只需在Cargo.toml
中加入包名,并在源码根文件中导入即可。
# Cargo.toml
# 声明依赖
[dependencies]
bit_field = "0.7.0"
// lib.rs
// 导入包
extern crate bit_field;
// 使用
use bit_field::BitField;
单元测试
TODO
但在写OS时,所有依赖QEMU环境的部分都是无法单元测试的。这部分下文会介绍集成测试的方法。
另一方面,这也鼓励我们将平台无关的代码独立出来,以库的形式发布。
文档
TODO
BareMetal环境
以上我们介绍了Rust开发标准应用程序的环境。但用它写OS还需要一些额外的配置。
核心库与标准库
no_std
TODO
target配置文件
TODO