想学 Rust 但不知道从哪里开始?读读该文

Go语言精选

共 7217字,需浏览 15分钟

 ·

2021-12-09 13:11

之前给大家推荐了相关的入门书籍,今天再来一个全面的 Rust 免费资源(有些适合收藏查阅)。

这个图很意思,收藏吧

这篇文章包含如下内容:

  • 介绍
  • Rust 工具链
  • Rust 免费在线图书和资源
  • Rust 官方链接
  • 视频教程
  • 交互式学习
  • Rust 社区
  • Rust IDE 扩展
  • Rust 生态
  • 进阶资源

01 介绍

Rust 是一门现代的系统编程语言,专注于安全,速度和并发。

这个基准测试[1]图表显示了 Rust 比哪些编程语言更快。你可以在此处[2]查看与 Go 语言的比较。

在本文中,你将找到基础 Rust 工具,最新文档,教程,视频和在线资源。

阅读此书后,你可以根据自己的情况,选择适合你的学习风格的方式开始有效地学习 Rust 编程语言。

安装 Rust 后,也就安装了 rustc,cargo,rustup 和其他标准工具。因此,让我们先了解 Rust 工具链,然后再看看其他资源。

02 Rust工具链

工具链是一组帮助语言生成功能代码的工具。它们可以通过简单的编译器和链接器程序,或其他库,IDE 或调试器提供扩展功能。

Rustup

rustup[3] 用于安装 Rust 编程语言,使你能够轻松地在稳定版,beta 版和 nightly 版编译器之间切换,并保持它们的更新。

你可以这样更新 Rust:

$ rustup update

rustc

rustc 是 Rust 编程语言的编译器。编译器是将源代码编译成二进制,比如库或可执行文件。通常我们会使用 Cargo 来运行 Rust 程序,而不是 rustc。

可以通过参考手册查看 rustc 的详细信息:https://doc.rust-lang.org/rustc/what-is-rustc.html。

Cargo

来自 The Cargo Book

Cargo 是 Rust 的包(package)管理器。Cargo 下载 Rust 包的依赖项,编译包,制作可分发的包,然后可以将它们上传到 Rust 社区的包 registry,即 crates.io。

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/。

03 Rust 免费在线书籍和资源

一般人学习 Rust 会找到官方的这本书:《The Rust Programming Language[4]》,不过这本书不一定是最好的。关于入门图书可以阅读该文。但这本书毕竟是官方出的,可以后续翻阅相关主题。比如它通过许多示例和图表解释了很多细节。

如果你喜欢通过示例的方式学习,Rust by Example[5] 很适合你。它是可运行示例的集合,这些示例说明了各种 Rust 概念和标准库。一共有 20 多个示例。

你可以从浏览器编辑和运行 Rust 代码(这是通过 Rust Playground 实现的):

Rust Cookbook 是一本简单示例集合的在线免费书籍,这些示例通常都是完成某个任务的最佳实践,例子中会大量使用 Rust 生态系统中的 crates。图书地址:https://rust-lang-nursery.github.io/rust-cookbook/intro.html。

04 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[6] 提供了你可能需要的文档和指南。
  • Awesome Rust[7] 分类整理各种 Rust 库和工具。
  • Ferrous Teaching Material[8] 包括基础到高级主题的幻灯片,它提供了示例代码和简明的解释。

Rust Errors

如果你想了解详细的 Rust 错误,可以查看 Rust 编译器错误索引[9],其中列出所有的 Rust 错误和示例。

例如终端有如下错误:

在这个错误索引中:

05 视频教程

如果你喜欢通过视频来学习,B 站有一个 Rust 的免费视频教程,参考官方那本书进行讲解的。Rust 编程语言入门:https://www.bilibili.com/video/BV1hp4y1k7SV。

此外,在 B 站搜索 Rust 编程,发现视频还是挺多的,有些是国外的视频,但 B 站的 Up 主们加上了字幕,大家自己去搜索吧。

06 交互式学习

只看不练是永远学不会的。这里推荐一些交会式学习的教程。

Tour of Rust

Tour of Rust:https://tourofrust.com/,本教程旨在循序渐进地介绍 Rust 编程语言的特性。它涵盖了基础知识、基本控制流、基本数据结构类型和泛型类型。这个 Rust 语言之旅是一个开源项目,有众多语言的翻译版本,简体中文版:https://tourofrust.com/00_zh-cn.html。(不过目前简体中文版还有第 8 章没有翻译)

rustlings

rustlings[10] 提供了一些小练习,在官方 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。

07 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 群、微信群。

Rust Meetup

这两年,国内社区也在组织相关的活动,比如 Rust China Conf 2020。最近 Rust 中文社区也在组织各个城市的 Meetup,比如 2021 年 4 月 10 日在北京的,可以通过这个链接报名:https://www.huodongxing.com/event/5590522571600 ,免费的,很棒!

08 Rust IDE 扩展

Rust 官方列出了支持 Rust 的编辑器扩展:https://www.rust-lang.org/tools。

如果你是 VSCode 用户,有官方的扩展(rust),也有社区的(rust-analyzer),目前看,似乎社区的扩展更好用。

不过官方已经在开发 rls 2.0,目标是获得更好的体验,期待一下。

这个网站:https://areweideyet.com/,可以查看各个编辑器对 Rust 的支持程度。

09 Rust 生态

你可以在 crates.io 中找到许多库。列一些你可能感兴趣的:

Web 框架

根据 Web 框架基准测试[11],Actix 是最快的框架。有十几个活跃的 Rust Web 框架。**Actix**[12], **Rocket**[13], **Gotham**[14], **Seed**[15] 等。你可以从 Web 框架比较[16]中了解更多信息。

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

命令行程序

  • 官方页面:https://www.rust-lang.org/what/cli
  • Rustbox[17] 是一个 API 库,它允许程序员编写基于文本的用户界面
  • 。。。

在 awesome-rust 中有很多库。

操作系统开发

有一个专门的网站:https://rust-osdev.com/。

其他语言绑定

这里可以找到:https://crates.io/keywords/bindings。

ORM

Diesel:http://diesel.rs/,是用于 Rust 的,安全可扩展的 ORM 和查询生成器。

10 进阶资源

学习完基础,入门 Rust 后,根据自己的兴趣和需要,可以看看下面这些进阶(或实战)资源。

  • **Command Line Applications in Rust**[18]:使用 Rust 编写命令行应用程序的技巧和实战。
  • **Rust API Guidelines**[19]:Rust API 指南,是关于如何设计 Rust 语言 API 的一些建议。
  • Rust 语言 Cheat Sheet:https://cheats.rs/,适合有经验的程序员和中级 Rust 用户。如果你更喜欢视觉示例驱动的内容,这是为你准备的。你可以从它的 Github repo 下载 PDF。
  • **Rust Forge**[20]:对 Rust 一些有用的补充文档。
  • **The Rust Reference**[21]:Rust 编程语言的主要参考。它提供了语言的结构和使用、内存模型、并发模型、运行时服务等等。
  • Rust 设计模式[22]
  • 。。。

资源还有很多很多,不一一列举了。

11 结论

除了以上列举的,肯定还有很多其他资源。目前,国内用户关于 Rust 的博客还没有来得及收集,有机会收集收集,分享给大家。

参考资料

[1]

基准测试: https://benchmarksgame-team.pages.debian.net/benchmarksgame/which-programs-are-fastest.html

[2]

此处: https://benchmarksgame-team.pages.debian.net/benchmarksgame/fastest/rust-go.html

[3]

rustup: https://github.com/rust-lang/rustup

[4]

The Rust Programming Language: https://doc.rust-lang.org/book/

[5]

Rust by Example: https://doc.rust-lang.org/rust-by-example/index.html

[6]

Learn Rust: https://www.rust-lang.org/learn

[7]

Awesome Rust: https://github.com/rust-unofficial/awesome-rust

[8]

Ferrous Teaching Material: https://ferrous-systems.github.io/teaching-material/

[9]

Rust 编译器错误索引: https://doc.rust-lang.org/error-index.html

[10]

rustlings: https://github.com/rust-lang/rustlings

[11]

Web 框架基准测试: https://www.techempower.com/benchmarks/#section=data-r19

[12]

Actix: https://github.com/actix/actix

[13]

Rocket: https://rocket.rs/

[14]

Gotham: https://gotham.rs/

[15]

Seed: https://github.com/seed-rs/seed

[16]

Web 框架比较: https://github.com/flosse/rust-web-framework-comparison

[17]

Rustbox: https://github.com/gchp/rustbox

[18]

Command Line Applications in Rust: https://rust-cli.github.io/book/index.html

[19]

Rust API Guidelines: https://rust-lang.github.io/api-guidelines/

[20]

Rust Forge: https://forge.rust-lang.org/index.html

[21]

The Rust Reference: https://doc.rust-lang.org/reference/introduction.html

[22]

Rust 设计模式: https://github.com/rust-unofficial/patterns



推荐阅读


福利

我为大家整理了一份从入门到进阶的Go学习资料礼包,包含学习建议:入门看什么,进阶看什么。关注公众号 「polarisxu」,回复 ebook 获取;还可以回复「进群」,和数万 Gopher 交流学习。

浏览 23
点赞
评论
收藏
分享

手机扫一扫分享

分享
举报
评论
图片
表情
推荐
点赞
评论
收藏
分享

手机扫一扫分享

分享
举报