本教程环境
系统:MacOS
Rust 版本:v1.77.2
Rust 语言简介
Rust 起源
Rust 官方网站
Rust 是在 2006 年由 Mozilla 员工 Graydon Hoare 个人发起的一个项目。这个项目的目标是解决一些长期困扰编程社区的问题(比如内存安全),同时提供低级别系统编程的能力。后来,经过的不断的发展,进行了大量的重构和改进,添加了许多创新的特型,例如所有权系统、生命周期、借用检查等。
到了 2015 年 Rust 1.0 正式发布。Rust 语言的聚焦于内存安全和性能,使得它特别适合系统级别的编程。因此,Rust 得到了像 Firefox、Dropbox 安全团队,以及许多其他技术公司的使用。
Rust 特性
- 高性能: Rust 速度惊人且内存利用率极高。由于没有运行时和垃圾回收,它能够胜任对性能要求特别高的服务。
- 可靠性: Rust 丰富的类型系统和所有权模型保证了内存安全和线程安全,让您在编译期就能够消除各种各样的错误。
- 生产力: Rust 拥有出色的文档、友好的编译器和清晰的错误提示信息, 还集成了一流的工具——包管理器和构建工具, 智能地自动补全和类型检验的多编辑器支持, 以及自动格式化代码等等。
Rust 应用
- 系统编程:因为 Rust 具有低级别的编程语言的能力,例如直接访问硬件和内存,它非常适合系统编程,包括操作系统,嵌入式系统,设备驱动,系统工具等。
- Web 开发:Rust 的异步编程特性,加上其出色的性能和安全性,使其非常适合 Web 开发。
- 游戏开发:Rust 的内存管理和高性能让它适用于游戏开发。
- 网络编程:Rust 被广泛应用于低延迟,高吞吐量的网络服务和应用中。例如,Tokio 是一个用 Rust 编写的异步 I/O 的运行时库。
- 并发与多线程:由于 Rust 的独特的所有权系统,它可以无需过多担忧的使用多线程并发。这使得 Rust 可以有效地用于多核和 GPU 编程。
- 工具链:Rust 常用于编写 CLI 工具和编辑器插件,许多流行的工具如 ripgrep、exa、alacritty 都是用 Rust 实现。
- WebAssembly:Rust 是目前支持 WebAssembly 最好的语言之一,可以开发高性能的前端应用。
Rust 开发环境
安装
Rust Playground 可以在线测试 Rust 代码,无须本地安装。
本地安装的话使用 Rustup 安装工具,它是专门用来管理 Rust 安装和版本管理的工具。就像 Node 中的 NVM。
Mac 系统使用如下命令安装:
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
安装成功之后,可以查看安装版本。
cargo是 Rust 的编译管理器、包管理器和通用工具。可以用来创建、启动、构建和运行新的 Rust 项目,并管理项目的依赖。rustc是 Rust 编译器。可以直接运行来编译 Rust 代码。如果使用cargo,它会替我们调用rustc编译器。rustdoc是 Rust 文档工具。在源代码中使用特定格式的注释编写文档,使用rustdoc即可构建格式良好的 HTML 文档。
更新
使用 Rustup 进行 Rust 更新。
rustup update # 更新到最新版本
rustup update <版本号> # 更新到特定版本
查看本地安装的 Rust 版本。其中 default 是默认使用的版本。
rustup toolchain list
切换 Rust 版本。
rustup default <版本号> # 切换到指定的版本
创建第一个 Rust 程序
直接使用 rustc 编译运行
安装完成 Rust 之后,可以开始使用 Rust 编写程序。创建一个 HelloWord01 的 Rust 项目。
cd Desktop && mkdir HelloWorld01
cd HelloWord01 && touch main.rs
使用编辑器打开 main.rs 文件,并编写如下代码。main() 是 Rust 程序的入口。
fn main() {
println!("Hello World!");
println!("Hello Rust!");
}
然后使用 rustc 编译 main.rs文件。
rustc main.rs
在项目目录中生成了 main 可执行文件。运行 main 可执行文件,即可得到如下输出。
在 Rust 中程序是需要通过编译之后才能进行运行。
使用 Cargo 创建项目
在实际的开发中,推荐使用 Cargo 来创建项目。它是 Rust 的构建工具和包管理器。
了解更多细节可阅读 Cargo 官方手册。
Cargo 的常用命令如下:
cargo new <项目名>创建一个 Rust 二进制项目。一般开发的项目都使用这个命令。cargo new --lib <库名>创建一个 Rust 库项目。cargo build编译当前项目。如果项目还未被编译过,或者源文件有更改,这个命令将会重新编译项目。cargo run编译并运行你的项目。先运行cargo build,然后运行生成的可执行文件。cargo test运行当前项目的测试。cargo doc为当前项目生成 HTML 文档。cargo check检查项目源文件的语法和类型错误,但是不生成可执行文件。该命令比cargo build更快,适合在编写代码的过程中频繁运行。cargo update包管理器将根据Cargo.toml的定义,试图用最新版本的包来替换当前的包。cargo install安装一个 Rust 的二进制文件。比如cargo install ripgrep将会安装 ripgrep 工具到你的系统中。
下面使用 Cargo 来创建一个官方示例 hello-rust 项目。
cargo new hello-rust
项目结构如下:
Cargo.toml是项目的清单文件,包含了项目的源数据和依赖库。src/main.rs是项目的入口文件。其中main()函数是项目的入口函数。项目的代码编写在src目录下。Cargo.lock是 Cargo 自动生成的文件,指定了项目依赖库的版本。target目录中存放了 Cargo 构建的二进制文件,以及构建过程中产生的临时文件。cargo build过程中的文件存放在target/debug目录。cargo build --release构建的优化后的版本文件存放在target/release目录。
使用 cargo run 编译并运行项目。
可以看到 target/debug 目录下有一个可执行文件 hello-rust。这个文件就是项目打包之后的二进制文件。可以直接运行。
接下来添加依赖。在 Rust 中通常把包称为 crates。可以在 crates.io 网站搜索需要的依赖包。
这里,我们在 Cargo.toml 中添加 [ferris-says](https://crates.io/crates/ferris-says) 库。
[dependencies]
ferris-says = "0.3"
然后运行 cargo build 来下载编译依赖库。
接下来,在 main.rs 中使用这个依赖库。
use ferris_says::say;
use std::io::{stdout, BufWriter};
fn main() {
let stdout = stdout();
let message = String::from("hello fellow Rustaceans!");
let width = message.chars().count();
let mut writer = BufWriter::new(stdout.lock());
say(&message, width, &mut writer).unwrap();
}
编辑器推荐
Rust 支持多种编辑器:
推荐使用 VS CODE。可以安装如下插件,提高编程体验:
rust-analyzer**必须安装,**Rust 语言的源码分析工具,提供了代码自动补全、即时诊断、类型信息提示、跳转到定义等特性。CodeLLDB一个由LLDB提供支持的本地调试器。调试 C++, Rust 等编译语言。Dependi帮助 Rust 开发人员管理 Cargo.toml 的依赖关系。Even Better TOMLToml 语言支持。
本节教程源码地址:github.com/zcfsmile/Ru…
参考链接:
🌟🌟 🙏🙏 感谢您的阅读,如果对您有帮助,请帮忙点个赞👍🌟🌟
🤔️ 欢迎评论区相互沟通交流