[Rust 入门]Rust 简介与开发环境搭建
本教程环境
系统: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 等编译语言。crates
帮助 Rust 开发人员管理 Cargo.toml 的依赖关系。Even Better TOML
Toml 语言支持。
本节教程源码地址:github.com/zcfsmile/Ru…
参考链接:
🌟🌟 🙏🙏 感谢您的阅读,如果对您有帮助,请帮忙点个赞👍🌟🌟 🤔️ 欢迎评论区相互沟通交流
转载自:https://juejin.cn/post/7358647992608505919