NiQin (blog: 苍劲的驽马) shared the aphorism --
I returned and saw under the sun, that the race is not to the swift, nor the battle to the strong, neither yet bread to the wise, nor yet riches to men of understanding, nor yet favour to men of skill; but time and chance happeneth to them all. -- 《圣经》

[Rust] 2021 年,学习 Rust 的网络资源推荐

💥 内容涉及著作权,均归属作者本人。若非作者注明,默认欢迎转载:请注明出处,及相关链接。

Summary: 这篇博文是 Stjepan Golemac 和 Luciano Mammino 两位作者整理的,是关于 2021 年学习 Rust 的资源列表推荐。这些资源列表基本都是国外的英文资料,包括免费和付费的。其中有些资源列表已经有中文翻译,笔者一并做了说明和加了链接。

Topics: rust 学习资料

本文翻译自 Stjepan Golemac 和 Luciano Mammino 两位作者整理的 2021 年 Rust 学习的资源列表,包括书籍、视频,以及博客。资源基本都是英文的,其中有些已经有中文翻译的资料,笔者一并做了说明和加了链接。

笔者在翻译中,对原文顺序稍作调整:为了尊重作者,将作者介绍提到了文章开始。

关于作者

Stjepan Golemac

Stjepan 是一个全栈工程师,对机器学习、高频交易、p2p、去中心化,以及 Rust 感兴趣。以前,他主要使用 JavaScript 和 TypeScript。主要是因为 Rust 使开发者能够编写安全且正确的代码,并且 Rust 具有极高的性能保证。所以,他成为了 Rust 的超级粉丝。如果你想关注 Stjepan,或者想打招呼,你可以查阅他的博客,或者在推特上给他发信息

Luciano Mammino

Luciano 是这个博客(本文英文原文所在博客)的所有者和主要作者。他是一个全栈开发人员,最近几年,他越来越关注可伸缩的云架构。因为 Rust 是一种很好的语言,可以学习和欣赏编程世界中有趣的低级细节,比如内存管理和线程安全。所以他被 Rust 所吸引,如果你想了解更多关于 Luciano 的信息,你可以查看他的介绍,或者在 Twitter 上与他联系

原文翻译


本文中,我们想提供一些免费和付费的资源列表,这些资源是我们 2 人在学习过程中最喜欢的。

Rust 显然不是最容易的编程语言,尤其是在您学习 Rust 的初始阶段。但是,一旦你能够克服起初的“恐惧之墙(wall of fear,译者注:有部大尺度的、不推荐你看的好莱坞惊梀片《Beyond The Wall of Fear 》)”,开始掌握一些关键概念,Rust 就会成为一种你会喜欢的语言,你可能会寻找越来越多的借口和理由,来使用它,并进一步学习它。因此,我们想收集一份资源清单,帮助新的 Rust 冒险者找到通向真正“rustaceans”的道路。

值得一提的是,这个清单完全是主观的,并不全面。我们只列出了我们有机会去探索和喜欢的资料。我们确信仍然有很多极棒的内容在那浩瀚的互联网世界,但我们还没有找到!因此,如果你认为这里缺少什么,请告诉我们!同时,我们还将提到一些付费内容,但我们提到这些资源时,不收取任何费用,也不向您推荐任何链接。

我们是谁

本文由 Luciano 和 Stjepan 撰写,我们是两位有着不同背景和专业知识的软件工程师。我们逐渐爱上了 Rust。如果您想了解更多关于我们的信息,了解我们为什么喜欢 Rust,请查看本文末尾的个人介绍(即本文提到开始位置的“关于作者”部分)。

免费资源

官方指南

Rust 程序设计语言——即 Rust 在github 中的仓库 book

最好的开始是阅读官方的 Rust 书籍《Rust 程序设计语言》!《Rust 程序设计语言》是一本由 Steve Klabnik 和 Carol Nichols 编写的开放式书籍,对于每个开始 Rust 旅程的人来说,都是一本必读书。这是一个相当全面的文档,它用非常清晰的示例和几个有趣的项目,探索了 Rust 语言中所有主要的概念。这些项目跨越了多个章节:从 CLI 上的猜谜游戏,到多线程 web 服务器。最棒的是,它是一个免费资源,由 Rust 官方团队亲自维护。在过去的几年里,它一直是最新的 Rust 学习资料。所以如果你想回顾一些你正在苦苦斗争的话题,它会是一个无所不容的资源。

注:《Rust 程序设计语言》已经由国内 KaiserY 主导的团队翻译完成,你可以查阅 KaiserY 的 github 仓库,也可以在线阅读

通过例子学习 Rust

《通过例子学习 Rust》是另一个奇妙的官方资源。它是一本书,但感觉更像是一张便条。它分为多级章节,每一章节都是你可以在 5 分钟内阅读完成的内容,但却可以学习和查阅一个新的 Rust 概念。您可以将其视为参考材料,并且您可以随时回顾。您可以随时记住一些具体细节,例如如何编写单元测试,或者匹配语法块确切来讲是什么。我们之所以喜欢这个资源,是因为它把很多精力放在代码上。当然,代码比文本更多,您将通过阅读代码中嵌入的注释来学习;在学习语言的概念时,进行语法实践,是一个很好的学习方法。

注:《通过例子学习 Rust》已经由国内 rust-lang-cn 团队翻译完成,你可以查阅 rust-lang-cn 的 github 仓库,也可以在线阅读

Rust 秘典 - The Rustonomicon

Rust 秘典》也是一个免费的官方书籍,面向那些已经有相当基础的 Rust 开发者,他们希望学习编写关于“不安全的(是指 Rust 的 unsafe 语法,并非字面含义的不安全因素)” Rust 的暗黑艺术!Rust 的 unsafe 代码可能会导致某些不安全的部分,这意味着编译器会让你做一些可能不安全的事情,你应该负责任地使用这种能力。unsafe 代码并不一定是不好的,但需要谨慎使用,这本书将指导您在开始编写 unsafe 代码之前,了解所有需要注意的细节。如果你想避免释放出难以形容的恐怖,请阅读它!

非官方资料

Rust 设计模式

Rust 设计模式》是另一本聚焦于 Rust 良好实践的开放式书籍。它探索了一些特定于 Rust 的概念,但也重新审视了软件工程中经典的行为创意结构设计模式,并将它们改编为 Rust 惯用方式。当然,它也会借此机会探索 RAII 和 NewType 等惯用的 Rust 模式。如果你了解我们,你可能会注意到,我们是设计模式的真正粉丝,所以我们不能跳过这本书!

最优雅的 Rust - Possible Rust

注:这个翻译感觉有些不合适,请您指正。

最优雅的 Rust 是一个设计精美的网站,谈论“什么是真正合理的 Rust 开发”。该网站分为两个主要部分:指南和模式。指南旨在解释一些有趣的概念,如外部函数接口(FFI)、Traits、枚举等,而模式部分则试图探索一些有趣的问题,如“当你不能创建 trait 对象时,你能做什么”。目前还没有太多的资料。但我们确信,这个资源是值得一看的,它会随着时间的推移而增长。保存在你的书签或阅读器!

易学易用 Rust - Easy Rust

我们是否已经说过 Rust 并非最容易学的语言?嗯,这正是《Rust 易学易用》的前提。这是另一本试图简单地处理 Rust 概念的开放式书籍,使它们更容易学习,以及更易于理解,尤其是对第一次接触 Rust 的学习者,或来自其它高级语言的工程师。我们特别喜欢书中的一些类比词,例如指针的比较(译者注:指与资料中列出的其它类似条目或其它语言的类似概念进行比较)。我们认为这个资料是对官方书籍(译者注:《Rust 程序设计语言》)的一个极好补充。但更有趣的是,最近,这本书的内容也在 YouTube 上提供了视频资料!

易学易用 Rust - youtube

学习 Rust

学习 Rust》是另一个全面的开放式 Rust 指南。这个漂亮的网站中,分为几个主要部分,它探讨了 Rust 的基础知识,但也有更先进的概念,如所有权,借用,泛型和特性。《学习 Rust》中主要提供简单的解释,并通过阅读 Rust 代码及其丰富的代码样本集,来激励学习。

Rust Cookbook

Rust Cookbook 也被称为 “Cookin’ with Rust”,它将自己定义为“简要实例示例集合:展示了在 Rust 生态系统中,使用各类 crate 来完成常见编程任务的良好实践”。到目前为止,已经提供了许多资源。而 Rust Cookbook 是一本使用开放式书籍构建工具(Rust 开发的高性能书籍构建工具 mdBook)构建的,因此它完全可以作为一个开放源码项目使用。这本书的重点是补充我们上面已经描述的许多资源。它不试图探索语言的基础知识,而是对常见的日常问题(如并发、压缩、加密和数据结构)采取实际的立场。对于这些领域中的每一个,它都提供了一些有趣的例子,并提出了一些通常用于解决这些问题的最常见的第三方库(crate)。

注:《Rust Cookbook 中文版》笔者已经翻译完成,你可以查阅 zzy 的 github 仓库,也可以在线阅读。欢迎您参与,共同准确同步官方内容。

结合完整的超大链表(Linked List)学习 Rust

链表是……很有趣!我是说有点有趣!如果你获得了计算机科学学位,你肯定对其有头大的认知历程。公平地说,链表没有什么问题,但是,恐怕很少有人喜欢它。

那么,为什么我们要关心 Rust 的链表呢?《结合完整的超大链表(Linked List)学习 Rust》,可能会提供一个关于此问题的合理答案。

如果你对自己的 Rust 知识感到自信,并且你想开始以一种实用的方式探索更高级的 Rust 话题,那么绝对推荐这个资源。

博客

Amos(fasterthanlime)

如果你想对 Rust 语言进行深入了解,以及为什么它是一个奇妙的语言,为什么和什么时候它可能不是那么好,以及它是如何变得更好,最好的地方进入 Amos(fasterthanlime)的博客

Amos 有着非常迷人的写作风格。他可以写很长的文章,但总是非常有趣。也许是因为他博大精深的学识,也许是因为他娱乐化的写作风格。

Yoshua Wuyts

Yoshua 是JavaScript 社区中非常有影响力的开发人员,我们有机会在几次会议上见到他。它总是能鼓舞人心。Yoshua 在最近的几年里越来越多地向 Rust 过渡,他在自己超棒的博客中记录了自己的旅程。

他的博客是一个非常好的地方,以用来了解 Async Rust,流数据,迭代器等。Yoshua 参与了多个开源项目,并提供了很多关于异步的优点和缺点的独到见解。

考虑到我们的 web 开发人员背景,到目前为止,我们最喜欢的文章是 Async HTTP

注:Yoshua 是 Tide 开发的主力,所以笔者对其非常喜欢。笔者去年始,Rust web 开发框架方面,转向了 Tide,已经有了多个基于 Tide 的产品。Tide 的应用模板项目,可以参阅 tide-graphql-mongodb,或者本博客的开源仓库 surfer

Steve Klabnik

Steve Klabnik 是 Rust 社区中最具影响力的人之一。因此一些很有影响力的 Rust 文章都来自他的博客。在这个博客中,有很多关于软件工程的内容,以及其他语言及其问题(以及解决方案),以及与 Rust 的比较。

Tyler Neely

如果您对数据库、性能优化、分布式系统等感兴趣,请查看 Tyler Neey 的博客。作者写了一些低层次的问题、技巧和窍门,以及 linux 上的开发等。而如果您想使用 Rust 尝试嵌入式数据库的开发,他们的项目 Sled 是一个非常好的工具。

Luca Palmieri

由 Luca Palmieri 撰写的学习期刊,是另一种探索 Rust 的宝贵学习资源。Luca 是书籍《Zero to Production in Rust》的作者,该书的一些章节已经以博客的形式发表。Luca 是一位非常多产的作者,有很多好的材料,大部分围绕着 web 开发。


后续还有——

  • 视频流媒体;
  • 电子期刊;
  • 播客;
  • 社区和聚会;
  • 练习和研讨会;
  • 精选开源项目;
  • ……

时间关系,我们放第二部分介绍。

谢谢您的阅读!


Related Articles

  1. [Rust] iRust.net:基于 Rust-Web 技术栈,及 image-rs、fluent-rs、rhai-script ……
  2. [WebAssembly] yew SSR 服务器端渲染
  3. [Rust] async-std 创建者对于最近“项目是否已死?”,移除对其支持等的答复
  4. [Rust] Rust 1.56.0 版本和 Rust 2021 版次发布,新特性一览,及项目的迁移、升级
  5. [WebAssembly] Rust 和 Wasm 的融合,使用 yew 构建 WebAssembly 博客应用的体验报告
  6. [Rust] Rust 官方周报 399 期(2021-07-14)
  7. [WebAssembly] Rust 和 Wasm 的融合,使用 yew 构建 web 前端(5)- 构建 HTTP 请求、与外部服务器通信的两种方法
  8. [Rust] Rust 官方周报 398 期(2021-07-07)
  9. [Rust] Rust 官方周报 397 期(2021-06-30)
  10. [Rust] Rust 官方周报 396 期(2021-06-23)
  11. [Rust] Rust 官方周报 395 期(2021-06-16)
  12. [Rust] Rust 1.53.0 明日发布,关键新特性一瞥
  13. [Rust] 使用 tide、handlebars、rhai、graphql 开发 Rust web 前端(3)- rhai 脚本、静态/资源文件、环境变量等
  14. [Rust] 使用 tide、handlebars、rhai、graphql 开发 Rust web 前端(2)- 获取并解析 GraphQL 数据
  15. [Rust] 使用 tide、handlebars、rhai、graphql 开发 Rust web 前端(1)- crate 选择及环境搭建
  16. [Rust] Rust 官方周报 394 期(2021-06-09)
  17. [Rust] Rust web 前端库/框架评测,以及和 js 前端库/框架的比较
  18. [WebAssembly] Rust 和 Wasm 的融合,使用 yew 构建 web 前端(4)- 获取 GraphQL 数据并解析
  19. [WebAssembly] Rust 和 Wasm 的融合,使用 yew 构建 web 前端(3)- 资源文件及小重构
  20. [WebAssembly] Rust 和 Wasm 的融合,使用 yew 构建 WebAssembly 标准的 web 前端(2)- 组件和路由
  21. [WebAssembly] Rust 和 Wasm 的融合,使用 yew 构建 WebAssembly 标准的 web 前端(1)- 起步及 crate 选择
  22. [Rust] Rust 官方周报 393 期(2021-06-02)
  23. [Rust] Rust 官方周报 392 期(2021-05-26)
  24. [Rust] Rust 中,对网址进行异步快照,并添加水印效果的实践
  25. [Rust] Rust 官方周报 391 期(2021-05-19)
  26. [Rust] Rust,风雨六载,砥砺奋进
  27. [Rust] 为什么我们应当将 Rust 用于嵌入式开发?
  28. [Rust] Rust 官方周报 390 期(2021-05-12)
  29. [Rust] Rust + Android 的集成开发设计
  30. [Rust] Rust 1.52.1 已正式发布,及其新特性详述
  31. [Rust] 让我们用 Rust 重写那些伟大的软件吧
  32. [Rust] Rust 1.52.0 已正式发布,及其新特性详述
  33. [Rust] Rust 官方周报 389 期(2021-05-05)
  34. [GraphQL] 基于 actix-web + async-graphql + rbatis + postgresql / mysql 构建异步 Rust GraphQL 服务(4) - 变更服务,以及小重构
  35. [Rust] Rust 1.52.0 稳定版预发布测试中,关键新特性一瞥
  36. [Rust] Rust 生态中,最不知名的贡献者和轶事
  37. [Rust] Rust 基金会迎来新的白金会员:Facebook
  38. [Rust] Rustup 1.24.1 已官宣发布,及其新特性详述
  39. [Rust] Rust 官方周报 388 期(2021-04-28)
  40. [Rust] Rust 官方周报 387 期(2021-04-21)
  41. [GraphQL] 构建 Rust 异步 GraphQL 服务:基于 tide + async-graphql + mongodb(4)- 变更服务,以及第二次重构
  42. [Rust] Rustup 1.24.0 已官宣发布,及其新特性详述
  43. [Rust] basedrop:Rust 生态中,适用于实时音频的垃圾收集器
  44. [Rust] Rust 编译器团队对成员 Aaron Hill 的祝贺
  45. [Rust] Jacob Hoffman-Andrews 加入 Rustdoc 团队
  46. [机器人] 为什么应将 Rust 引入机器人平台?以及机器人平台的 Rust 资源推荐
  47. [Rust] rust-lang.org、crates.io,以及 docs.rs 的管理,已由 Mozilla 转移到 Rust 基金会
  48. [Rust] Rust 官方周报 386 期(2021-04-14)
  49. [Rust] Rust 编译器(Compiler)团队 4 月份计划 - Rust Compiler April Steering Cycle
  50. [GraphQL] 基于 actix-web + async-graphql + rbatis + postgresql / mysql 构建异步 Rust GraphQL 服务(3) - 重构
  51. [Rust] 头脑风暴进行中:Async Rust 的未来熠熠生辉
  52. [GraphQL] 基于 actix-web + async-graphql + rbatis + postgresql / mysql 构建异步 Rust GraphQL 服务(2) - 查询服务
  53. [GraphQL] 基于 actix-web + async-graphql + rbatis + postgresql / mysql 构建异步 Rust GraphQL 服务 - 起步及 crate 选择
  54. [Rust] Rust 2021 版本特性预览,以及工作计划
  55. [Rust] Rust 用在生产环境的 42 家公司
  56. [Rust] 构建最精简的 Rust Docker 镜像
  57. [Rust] Rust 官方周报 385 期(2021-04-07)
  58. [Rust] 使用 Rust 做异步数据采集的实践
  59. [Rust] Android 支持 Rust 编程语言,以避免内存缺陷
  60. [Rust] Android 平台基础支持转向 Rust
  61. [Rust] Android 团队宣布 Android 开源项目(AOSP),已支持 Rust 语言来开发 Android 系统本身
  62. [Rust] RustyHermit——基于 Rust 实现的下一代容器 Unikernel
  63. [Rust] Rustic:完善的纯粹 Rust 技术栈实现的国际象棋引擎,多平台支持(甚至包括嵌入式设备树莓派 Raspberry Pi、Buster)
  64. [Rust] Rust 迭代器(Iterator trait )的要诀和技巧
  65. [Rust] 使用 Rust 极致提升 Python 性能:图表和绘图提升 24 倍,数据计算提升 10 倍
  66. [Rust] 【2021-04-03】Rust 核心团队人员变动
  67. [Rust] Rust web 框架现状【2021 年 1 季度】
  68. [Rust] Rust 官方周报 384 期(2021-03-31)
  69. [Rust] Rust 中的解析器组合因子(parser combinators)
  70. [生活] 毕马威(KPMG)调查报告:人工智能的实际采用,在新冠疫情(COVID-19)期间大幅提升
  71. [Python] HPy - 为 Python 扩展提供更优秀的 C API
  72. [Rust] 2021 年,学习 Rust 的网络资源推荐(2)
  73. [Rust] 2021 年,学习 Rust 的网络资源推荐
  74. [生活] 况属高风晚,山山黄叶飞——彭州葛仙山露营随笔
  75. [Rust] Rust 1.51.0 已正式发布,及其新特性详述
  76. [Rust] 为 Async Rust 构建共享的愿景文档—— Rust 社区的讲“故事”,可获奖
  77. [Rust] Rust 纪元第 382 周最佳 crate:ibig 的实践,以及和 num crate 的比较
  78. [Rust] Rust 1.51.0 稳定版本改进介绍
  79. [Rust] Rust 中将 markdown 渲染为 html
  80. [生活] 国民应用 App 的用户隐私数据窥探
  81. [GraphQL] 构建 Rust 异步 GraphQL 服务:基于 tide + async-graphql + mongodb(3)- 重构
  82. [GraphQL] 构建 Rust 异步 GraphQL 服务:基于 tide + async-graphql + mongodb(2)- 查询服务
  83. [GraphQL] 构建 Rust 异步 GraphQL 服务:基于 tide + async-graphql + mongodb(1)- 起步及 crate 选择
  84. [Rust] Rust 操控大疆可编程 tello 无人机

Topics

rust(84)

graphql(17)

rust-官方周报(17)

webassembly(16)

wasm(10)

tide(9)

async-graphql(9)

yew(9)

rust-web(8)

rust-官方博客(8)

this-week-in-rust(6)

mysql(5)

actix-web(5)

rbatis(5)

android(4)

mongodb(3)

json-web-token(3)

jwt(3)

cargo(3)

技术延伸(3)

rust-wasm(3)

trunk(3)

handlebars(3)

rhai(3)

async-std(3)

用户隐私(2)

学习资料(2)

python(2)

ai(2)

人工智能(2)

postgresql(2)

rust-compiler(2)

rust-基金会(2)

rust-foundation(2)

rustup(2)

rust-toolchain(2)

rust-工具链(2)

rust-游戏开发(2)

rust-区块链(2)

rust-2021(2)

graphql-client(2)

surf(2)

rust-game(2)

rusthub(2)

tello(1)

drone(1)

无人机(1)

隐私数据(1)

markdown(1)

html(1)

crate(1)

async(1)

异步(1)

旅游(1)

不忘生活(1)

葛仙山(1)

hpy(1)

python-扩展(1)

正则表达式(1)

解析器组合因子(1)

组合器(1)

regular-expression(1)

parser-combinator(1)

regex(1)

官方更新(1)

rust-工作招聘(1)

rust-技术资料(1)

rust-周最佳-crate(1)

rust-web-框架(1)

rust-web-framework(1)

rust-核心团队(1)

rust-core-team(1)

rust-language-team(1)

pyo3(1)

rust-python-集成(1)

python-性能改进(1)

迭代器(1)

iterator-trait(1)

国际象棋(1)

chess(1)

游戏引擎(1)

game-engine(1)

虚拟化(1)

unikernel(1)

rustyhermit(1)

linux(1)

virtualization(1)

sandboxing(1)

沙箱技术(1)

数据采集(1)

异步数据采集(1)

docker(1)

镜像(1)

生产环境(1)

rust-评价(1)

rust-2021-edition(1)

rust-2021-版本(1)

graphql-查询(1)

vision-doc(1)

愿景文档(1)

代码重构(1)

steering-cycle(1)

方向周期(1)

隐私声明(1)

机器人(1)

robotics(1)

rustdoc(1)

rust-编译器(1)

实时音频(1)

real-time-audio(1)

变更服务(1)

mutation(1)

查询服务(1)

query(1)

rust-贡献者(1)

rust-轶事(1)

rust-稳定版(1)

rust-预发布(1)

rust-测试(1)

安全编程(1)

可信计算(1)

安全代码(1)

secure-code(1)

rust-android-integrate(1)

rust-embedded(1)

rust-嵌入式(1)

rust-生产环境(1)

rust-production(1)

网页快照(1)

网页截图(1)

水印效果(1)

图片水印(1)

yew-router(1)

css(1)

web-前端(1)

wasm-bindgen(1)

区块链(1)

blockchain(1)

dotenv(1)

标识符(1)

rust-1.53.0(1)

rust-1.56.0(1)

rust-项目升级(1)

异步运行时(1)

ssr(1)

tokio(1)

warp(1)

reqwest(1)

graphql-rust(1)


Elsewhere

- Open Source
  1. github/zzy
  2. github/sansx
- Learning & Studying
  1. Rust 学习资料 - iRust.net