1、介绍
Rust 是一门现代的系统编程语言,专注于安全,速度和并发。可以在此处查看与 Go 语言的比较。
安装 Rust 后,也就安装了 rustc,cargo,rustup 和其他标准工具。因此,先了解 Rust 工具链,然后再看看其他资源。
2、Rust工具链
工具链是一组帮助语言生成功能代码的工具。它们可以通过简单的编译器和链接器程序,或其他库,IDE 或调试器提供扩展功能。
Rustup
rustup用于安装 Rust 编程语言,能够轻松地在稳定版,beta 版和 nightly 版编译器之间切换,并保持它们的更新。
可以这样更新 Rust:
$ rustup update
# Installation of a toolchain
$ rustup install stable
# Set the default toolchain
$ rustup default stable
# Override the default toolchain in your directory
$ rustup override stable
# Display documentation in browser
$ rustup doc [--std]
# List supported targets
$ rustup target list
# Add and install a target to the toolchain
$ rustup target add <target>
# Modify a toolchain's installed components
$ rustup component add rustfmt
rustc
rustc 是 Rust 编程语言的编译器。编译器是将源代码编译成二进制,比如库或可执行文件。通常会使用 Cargo 来运行 Rust 程序,而不是 rustc。
可以通过参考手册查看 rustc 的详细信息:https://doc.rust-lang.org/rustc/what-is-rustc.html。
Cargo
Cargo 是 Rust 的包(package)管理器。Cargo 下载 Rust 包的依赖项,编译包,制作可分发的包,然后可以将它们上传到 Rust 社区的包 registry,即 crates.io。
# Compile the current package
$ cargo build [OPTIONS]
# Analyze the current package and report errors,but no build object files
$ cargo check [ OPTIONS]
# Remove the target directory
$ cargo clean [OPTIONS]
# Build this package 's and its dependencies' documentation
$ cargo doc [OPTIONS]
# Create a new cargo package
$ cargo new [OPTIONS] PATH
# Create a new cargo package in an existing directory
$ cargo init [OPTIONS] [PATH]
# Run a binary or example of the local package
$ cargo run [OPTIONS] [-- ARGS]
# Run the tests
$ cargo test [OPTIONS][TESTNAME][-- TEST-OPTIONS]
# Update dependencies listed in Cargo .lock
$ cargo update [OPTIONS]
# Install a Rust binary. Default location is $HOME/ .cargo/bin
$ cargo install [OPTIONS] CRATE
# List all installed packages and their version
$ cargo install --list
# Uninstall a Rust binary
$ cargo uninstall [OPTIONS] [SPEC]
Cargo 的快速参考
同样的,详细内容可以看 Cargo 的参考手册,即 The Cargo Book:https://doc.rust-lang.org/cargo/。
其他官方工具
- Clippy:https://github.com/rust-lang/rust-clippy,这是一个 Rust 的 linter 工具;
- rustfmt:https://github.com/rust-lang/rustfmt,根据样式准则格式化 Rust 代码;
其他更多官方工具可以通过这个链接查看:https://rust-lang-nursery.github.io/rust-toolstate/。
3、Rust 免费在线书籍和资源
一般人学习 Rust 会找到官方的这本书:《The Rust Programming Language》,不过这本书不一定是最好的。但这本书毕竟是官方出的,可以后续翻阅相关主题。比如它通过许多示例和图表解释了很多细节。
如果喜欢通过示例的方式学习,Rust by Example 很适合你。它是可运行示例的集合,这些示例说明了各种 Rust 概念和标准库。一共有 20 多个示例。
可以从浏览器编辑和运行 Rust 代码(这是通过 Rust Playground 实现的)。
Rust Cookbook 是一本简单示例集合的在线免费书籍,这些示例通常都是完成某个任务的最佳实践,例子中会大量使用 Rust 生态系统中的 crates。图书地址:https://rust-lang-nursery.github.io/rust-cookbook/intro.html。
4、Rust 官方链接
Rust 的官方网站:https://www.rust-lang.org/,官网支持多种国家和地区语言。
crate 是 Rust 社区二进制或库的 Registry,地址:https://crates.io/。
一个 crate 是功能的集合,而一个包(package)包含一个或多个 crate。一个包会有一个 Cargo.toml 文件,用来描述怎样构建这些 crate。
Rust 标准库地址:https://doc.rust-lang.org/std/。
Rust Playground 让你可以在浏览器中试用 Rust,同时可以方便的分享自己的代码给别人。地址:https://play.rust-lang.org/。
其他资源链接
- Learn Rust 提供了可能需要的文档和指南。
- Awesome Rust 分类整理各种 Rust 库和工具。
Ferrous Teaching Material 包括基础到高级主题的幻灯片,它提供了示例代码和简明的解释。
Rust Errors
如果想了解详细的 Rust 错误,可以查看 Rust 编译器错误索引,其中列出所有的 Rust 错误和示例。
在这个错误索引中:
5、视频教程
如果喜欢通过视频来学习,B 站有一个 Rust 的免费视频教程,参考官方那本书进行讲解的。Rust 编程语言入门:https://www.bilibili.com/video/BV1hp4y1k7SV。
此外,在 B 站搜索 Rust 编程,发现视频还是挺多的,有些是国外的视频,但 B 站的 Up 主们加上了字幕,大家自己去搜索吧。6、交互式学习
Tour of Rust
Tour of Rust:https://tourofrust.com/,本教程旨在循序渐进地介绍 Rust 编程语言的特性。它涵盖了基础知识、基本控制流、基本数据结构类型和泛型类型。这个 Rust 语言之旅是一个开源项目,有众多语言的翻译版本,简体中文版:https://tourofrust.com/00_zh-cn.html。(不过目前简体中文版还有第 8 章没有翻译)
rustlings
rustlings 提供了一些小练习,在官方 GitHub 账号下,让你习惯于阅读和编写 Rust 代码。可以将其与官方的那本书搭配学习。
安装好 Rust 后,可以通过如下命令安装 rustlings(Mac/Linux),Windows 下看 GitHub 首页的说明安装:$ cd ~
$ curl -L https://git.io/install-rustlings | bash
成功后,在终端执行如下命令:
$ cd ~/rustlings
$ rustlings watch
这时会出现如下错误:
打开 exercises/variables/variables1.rs 文件,在 x = 5 前面加上let
,保存,这个 watch 界面变成:
也就是说,rustlings 中的练习都是故意未完成的。当完成一个练习后,将// I AM NOT DONE
这句删除,rustlings watch 会自动监听下一个练习。
而且每一个练习文件开头给了类似这样的提示:// Make me compile! Execute the command `rustlings hint variables1` if you want a hint :)
可以按照它的提示,执行:
$ rustlings hint variables1
Hint: The declaration on line 12 is missing a keyword that is needed in Rust
to create a new variable binding.
Exercism
100% 免费的代码实践和指导。它完全是开源的,由数千名志愿者贡献。它将指导如何在电脑上安装它。不仅可以学习 Rust,还可以学习其他 50 种编程语言。
当完成了一个编码练习后,可以上传解决方案,并由一个导师 review。7、Rust 社区
博客和新闻(英文)
Rust Community page:https://www.rust-lang.org/community
- 推荐《Rust周刊》:https://this-week-in-rust.org/,它每周提供最新的关于 Rust 的信息
- Rust 官方博客:https://blog.rust-lang.org/,核心团队利用这个博客来发布 Rust 的重大进展
Inside Rust 博客:https://blog.rust-lang.org/inside-rust/index.html,也是官方的博客,不过针对那些希望参与 Rust 开发的人
获取帮助?
Rust Discord:https://discord.com/invite/rust-lang
Rust Users Forum:https://users.rust-lang.org/
Stackoverflow 和 Reddit 等。
不过国内用户可以在 Rust语言中文社区 交流,地址:https://rustcc.cn/。当然,国内一般都有 QQ 群、微信群。8、Rust IDE 扩展
Rust 官方列出了支持 Rust 的编辑器扩展:https://www.rust-lang.org/tools。
如果是 VSCode 用户,有官方的扩展(rust),也有社区的(rust-analyzer),目前看,似乎社区的扩展更好用。
不过官方已经在开发 rls 2.0,目标是获得更好的体验,期待一下。
这个网站:https://areweideyet.com/,可以查看各个编辑器对 Rust 的支持程度。
9、Rust 生态
可以在 crates.io 中找到许多库。列一些可能感兴趣的:
Web 框架
根据 Web 框架基准测试,Actix 是最快的框架。有十几个活跃的 Rust Web 框架。Actix, Rocket, Gotham, Seed等。可以从 Web 框架比较中了解更多信息。
Web 开发
最快的 Rust 模板引擎:https://github.com/Kogia-sima/sailfish/,据说比 handlebars 快 200 倍。
WebAssembly
如果对 WebAssembly 感兴趣,以下链接可以看看:
官方关于 WebAssembly 的介绍:https://www.rust-lang.org/what/wasm
- 一本专门关于 Rust 和 WebAssembly 的书:https://rustwasm.github.io/docs/book/
- 一个 Rust/Wasm 框架:https://github.com/yewstack/yew
网络编程
官方关于这块内容有专门的介绍:https://www.rust-lang.org/what/networking。
嵌入式开发
- 官方页面:https://www.rust-lang.org/what/embedded
Rust 嵌入式开发的图书:https://docs.rust-embedded.org/book/intro/index.html
命令行程序
- Rustbox 是一个 API 库,它允许程序员编写基于文本的用户界面
操作系统开发
有一个专门的网站:https://rust-osdev.com/。
其他语言绑定
这里可以找到:https://crates.io/keywords/bindings。
ORM
Diesel:http://diesel.rs/,是用于 Rust 的,安全可扩展的 ORM 和查询生成器。
10、进阶资源
学习完基础,入门 Rust 后,根据自己的兴趣和需要,可以看看下面这些进阶(或实战)资源。
- Command Line Applications in Rust:使用 Rust 编写命令行应用程序的技巧和实战。
- Rust API Guidelines:Rust API 指南,是关于如何设计 Rust 语言 API 的一些建议。
- Rust 语言 Cheat Sheet:https://cheats.rs/,适合有经验的程序员和中级 Rust 用户。如果更喜欢视觉示例驱动的内容。可以从它的 Github repo 下载 PDF。
- Rust Forge:对 Rust 一些有用的补充文档。
- The Rust Reference:Rust 编程语言的主要参考。它提供了语言的结构和使用、内存模型、并发模型、运行时服务等等。
- Rust 设计模式
参考资料
基准测试: https://benchmarksgame-team.pages.debian.net/benchmarksgame/which-programs-are-fastest.html
此处: https://benchmarksgame-team.pages.debian.net/benchmarksgame/fastest/rust-go.html
rustup: https://github.com/rust-lang/rustup
The Rust Programming Language: https://doc.rust-lang.org/book/
Rust by Example: https://doc.rust-lang.org/rust-by-example/index.html
Learn Rust: https://www.rust-lang.org/learn
Awesome Rust: https://github.com/rust-unofficial/awesome-rust
Ferrous Teaching Material: https://ferrous-systems.github.io/teaching-material/
Rust 编译器错误索引: https://doc.rust-lang.org/error-index.html
rustlings: https://github.com/rust-lang/rustlings
Web 框架基准测试: https://www.techempower.com/benchmarks/#section=data-r19
Actix: https://github.com/actix/actix
Rocket: https://rocket.rs/
Gotham: https://gotham.rs/
Seed: https://github.com/seed-rs/seed
Web 框架比较: https://github.com/flosse/rust-web-framework-comparison
Rustbox: https://github.com/gchp/rustbox
Command Line Applications in Rust: https://rust-cli.github.io/book/index.html
Rust API Guidelines: https://rust-lang.github.io/api-guidelines/
Rust Forge: https://forge.rust-lang.org/index.html
The Rust Reference: https://doc.rust-lang.org/reference/introduction.html
Rust 设计模式: https://github.com/rust-unofficial/patterns