rust学习-初识rust
rust学习-初识rust
- 什么是 Rust?
- Rust 的特点
- 什么是 Cargo?
- Cargo 的主要功能
- 使用 Cargo 创建和管理项目
- Cargo.toml 文件详解
- 常用 Cargo 命令
- 什么是 Rustup?
- Rustup 的主要功能
- 安装 Rustup
- 验证安装
- 使用 Rustup 管理工具链
- 使用 Rustup 管理目标平台
- 使用 Rustup 管理组件
- 使用 Rustup 管理配置文件
什么是 Rust?
Rust 是一种系统编程语言,由 Mozilla 研究院开发并于 2012年首次发布。它旨在提供内存安全、并发安全和零成本抽象的特性,同时保持高性能。Rust 的设计目标是替代 C++在系统编程中的地位,特别是在需要高性能和安全性的场景中
Rust 的特点
- 内存安全:Rust 通过其所有权系统(Ownership System)和借用检查器(Borrow Checker)来保证内存安全,避免常见的内存错误如空指针、悬空指针和数据竞争
- 零成本抽象:Rust 可使用高级抽象,而不需要为此付出运行时性能的代价。这使得代码既安全又高效
- 并发安全:Rust 的类型系统和所有权模型确保了并发代码的安全性,避免数据竞争
- 跨平台支持:Rust 可以在多种平台上运行,包括 Linux、Windows、macOS 等
- 社区和生态:Rust 有一个活跃的开源社区,提供了丰富的库和工具,形成了强大的生态系统
什么是 Cargo?
Cargo 是 Rust 的包管理器和构建系统。它负责管理项目的依赖、编译代码、运行测试以及发布包。Cargo 使得 Rust项目的管理变得更加简单和高效
Cargo 的主要功能
- 项目创建:Cargo 可快速创建一个新的 Rust 项目
- 依赖管理:Cargo 可自动下载和管理项目所需的依赖库
- 构建系统:Cargo 负责编译项目,并处理所有的编译选项和优化
- 测试运行:Cargo 可以运行项目的单元测试和集成测试
- 发布管理:Cargo 可以将项目打包并发布到 crates.io(Rust 的官方包仓库)
使用 Cargo 创建和管理项目
- 安装 Rust 和 Cargo
首先需要安装 Rust 和 Cargo。可以通过以下命令安装:
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
安装完成后,Rust 和 Cargo 将会自动安装到你的系统中
- 创建新项目
可通过以下命令创建一个新的项目:
cargo new hello_world
这条命令会创建一个名为 hello_world 的目录,并在其中生成一个新的 Rust 项目
生成的项目结构如下:
hello_world/
├── Cargo.toml
└── src
└── main.rs
- Cargo.toml 是项目的配置文件,包含了项目的基本信息和依赖
- src/main.rs 是项目的主代码文件,默认包含一个简单的 “Hello, world!” 程序
- 构建和运行项目
在项目目录中,可以使用以下命令来构建和运行项目:
cargo build
这条命令会编译项目,并在 target/debug 目录下生成可执行文件
要运行项目,可以使用:
cargo run
这条命令会先编译项目(如果代码有变化),然后运行生成的可执行文件
- 添加依赖
Rust 项目通常依赖于外部的库,可以在 Cargo.toml 文件中添加依赖项。例如,假设若想要使用 rand 库来生成随机数,可以在 Cargo.toml 中添加以下内容:
[dependencies]
rand = "0.8"
保存文件后,运行 cargo build,Cargo 会自动从 crates.io 下载并编译 rand 库
- 运行测试
Rust 内置了对单元测试的支持,可以在代码中编写测试函数,并使用 Cargo 运行这些测试
例如,在 src/main.rs 中添加一个简单的测试:
#[cfg(test)]
mod tests {
#[test]
fn it_works() {
assert_eq!(2 + 2, 4);
}
}
然后运行测试:
cargo test
Cargo 会自动查找并运行所有的测试函数
- 发布项目
当准备好发布项目时,可以使用 cargo build --release 来生成优化的构建版本:
cargo build --release
生成的可执行文件将位于 target/release 目录下,并且经过了充分的优化,适合用于生产环境
Cargo.toml 文件详解
Cargo.toml 是 Cargo 的配置文件,包含了项目的基本信息和依赖项。以下是 Cargo.toml 的一个示例:
[package]
name = "hello_world"
version = "0.1.0"
edition = "2021"
[dependencies]
rand = "0.8"
[build-dependencies]
cc = "1.0"
[dev-dependencies]
tempfile = "3.1"
[features]
default = []
[profile.dev]
opt-level = 1
[profile.release]
opt-level = 3
- [package]:定义了项目的基本信息,如项目名称、版本号和使用的 Rust 版本
- [dependencies]:列出了项目所依赖的外部库及其版本号
- [build-dependencies]:列出了构建项目时所需的依赖库
- [dev-dependencies]:列出了仅在开发环境中使用的依赖库,例如测试工具
- [features]:用于定义项目的功能特性,可以在编译时启用或禁用某些功能
- [profile.dev] 和 [profile.release]:定义了不同构建配置下的编译选项
常用 Cargo 命令
- cargo new :创建一个新项目
- cargo build:编译项目
- cargo run:编译并运行项目
- cargo test:运行项目的测试
- cargo check:检查代码的语法和类型,但不进行编译
- cargo update:更新项目的依赖
- cargo doc:生成项目的文档
- cargo publish:将项目发布到 crates.io
什么是 Rustup?
Rustup 是 Rust 的官方工具链管理工具。可轻松地安装、管理和切换不同版本的 Rust编译器(rustc)和相关的工具链。Rustup 是 Rust 生态系统的重要组成部分,它使得开发者能够在不同的 Rust版本之间无缝切换,并且能够轻松地安装和管理 Rust 的工具链
Rustup 的主要功能
- 安装 Rust:Rustup 是安装 Rust 的推荐方式。它不仅可以安装 Rust 编译器,还可以安装 Cargo、Rust 文档和其他工具
- 管理工具链:Rustup 可安装和管理多个 Rust 工具链。你可以轻松地在稳定版、测试版和 nightly 版之间切换
- 更新 Rust:Rustup 可以自动检查并更新 Rust 工具链到最新版本
- 跨平台支持:Rustup 支持多种操作系统,包括 Linux、Windows 和 macOS
- 自定义工具链:Rustup 可安装自定义的工具链,例如针对特定目标平台的工具链
安装 Rustup
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
这条命令会下载并运行 Rustup 的安装脚本,安装过程中,可选择默认的安装选项,或者根据需要进行自定义配置
安装完成后,Rustup 会自动将 Rust 工具链添加到对应的系统路径中
验证安装
安装完成后,可以通过以下命令验证 Rust 和 Rustup 是否安装成功:
rustc --version
cargo --version
rustup --version
这些命令会分别输出 Rust 编译器、Cargo 和 Rustup 的版本信息
使用 Rustup 管理工具链
- 安装不同的工具链
Rustup 可安装多个 Rust 工具链。可以通过以下命令安装不同的工具链:
- 稳定版(Stable):这是 Rust 的稳定版本,适合大多数生产环境
rustup toolchain install stable
- 测试版(Beta):这是 Rust 的测试版本,包含了即将发布的稳定版功能
rustup toolchain install beta
- Nightly 版:这是 Rust 的每日构建版本,包含了最新的功能和实验性特性
rustup toolchain install nightly
- 切换工具链
可以使用 rustup default 命令来切换默认的工具链。例如,切换到 nightly 版:
rustup default nightly
可以在特定项目中使用不同的工具链,而不影响全局默认设置。例如,在项目目录中运行:
rustup override set nightly
这条命令会为当前项目设置 nightly 工具链
- 列出已安装的工具链
可以使用以下命令列出所有已安装的工具链:
rustup toolchain list
- 更新工具链
Rustup 可以自动检查并更新已安装的工具链。可以通过以下命令更新所有工具链:
rustup update
- 卸载工具链
如果不再需要某个工具链,可以使用以下命令卸载它:
rustup toolchain uninstall nightly
使用 Rustup 管理目标平台
Rustup 可为不同的目标平台安装和配置工具链。例如可为交叉编译安装目标平台的工具链
- 添加目标平台
可以使用以下命令为目标平台添加工具链。例如,为 x86_64-unknown-linux-musl 目标平台添加工具链:
rustup target add x86_64-unknown-linux-musl
- 列出已安装的目标平台
可以使用以下命令列出所有已安装的目标平台:
rustup target list
- 移除目标平台
如果不再需要某个目标平台,可以使用以下命令移除它:
rustup target remove x86_64-unknown-linux-musl
使用 Rustup 管理组件
Rustup 可安装和管理 Rust 的组件,例如 rust-docs、rust-src 和 clippy
- 安装组件
可以使用以下命令安装组件。例如,安装 rust-docs 组件:
rustup component add rust-docs
- 列出已安装的组件
可以使用以下命令列出所有已安装的组件:
rustup component list
- 移除组件
如果不再需要某个组件,可以使用以下命令移除它:
rustup component remove rust-docs
使用 Rustup 管理配置文件
Rustup 可管理不同的配置文件,例如 default、minimal 和 complete。这些配置文件定义了安装 Rust时包含的组件
- 查看当前配置文件
可以用下命令查看当前的配置文件:
rustup show profile
- 切换配置文件
可以使用以下命令切换配置文件。例如,切换到 minimal 配置文件:
rustup set profile minimal