vlambda博客
学习文章列表

2021学习Rust语言的最佳途径

时下最流行的语言是Java和Python,但是程序员们最想了解和学习的语言则要属Rust了。学习语言最重要的是选择合适的材料,那么学习Rust的最佳途径是啥呢?本文我们就来介绍一下。

开放书籍

Rust编程语言

Rust编程语言(doc.rust-lang.org/book/)是由Steve Klabnik和Carol Nichols编写的一本免费书,是Rust学习入门必读之书书。Rust编程语言是一本非常全面的文档,它通过非常清晰的示例和一些有趣的项目来展示Rust语言的概念,书中的项目遍布每一个章节,从命令行猜谜游戏到多线程Web服务器都有涉猎。作为一本开放书籍,本身还有Rust社区维护,可以一直保持最新状态,永远不会过时,这对快速发展的语言来说尤为重要。该书已经有中文版的翻译,但是建议最好结合原版一起学习。

Rust实例教程

《Rust实例教程》(Rust by example)是另一本很棒的官方书籍。该教程结构上像一本书,但更像是个备忘录。它分为小章节和子章节。每部分,可以在5分钟内完成阅读和学习,以了解基本的Rust概念。可以将其当做一本参考资料,并且在难以记住某些特定细节(例如如何编写单元测试或的确切语法是什么)时可以随时查阅。该材料主要立足于代码,可以通过实际的代码来真正实践,当然很多代码可以直接“拿来”使用。

Rustonomicon

Rustonomicon (doc.rust-lang.org/nomicon/)也是一本官方提供的开放书籍,适合那些已经对Rust有一定的基础,很了解基础代码,并且确认可以把握更多、充满信心并想要学习Rust Unsafe黑暗技巧的人。Rust可能包含Unsafe特性,只适合于高级程序员和类库作者使用,但是确实提供了更大程度的自由。它意味着编译器需要执行可能不安全的操作,如果不了解(不负责任)使用此功能,可能会带一些问题。不安全的代码不一定很糟糕,但是需要谨慎使用,本书将引导用户了解开始编写Unsafe Rust之前需要了解的所有细节。如果想避免出现不可把握的情况,请一定阅读该手册,记住那一句话“权力越大,责任也越大”!

Rust设计模式

《Rust设计模式》(Rust Design Patterns)也是一本开放书籍,着重于教给用户Rust的惯用法。它探索了一些特定于Rust的概念,但也重新审视了经典的 行为、创造和结构设计模式,使之适应Rust的惯用语法。也借此机会探索了惯用的Rust模式,例如 RAII和NewType。在学习语言时候,虫虫认为最重要的就是要“身临其境”,即学习并用该语言的惯用语法来写代码,才能更加高效的学习高效的编程。而通常容易犯的一个错误就是“以此推彼”:“为什么Rust不支持xxx,java和python都有的”,如果这样类比学习会非常苦恼,有些问题甚至是根本没有答案。所有学习rust时候就忘记其他语言,而用rust通常是怎么写的,怎么实现的,这样就会一气呵成,越来越顺,而不是开头就“卡壳”了。

Possible Rus

Possible Rust是一个设计精美的语言站,谈论“Rust实际可能实现的事情”。主要提供两个主要部分:指南和模式。指南旨在解释有趣的Rust概念,例如外部函数接口(FFI),Traits,枚举等,而“模式”部分则尝试探索有趣的陷阱,例如 “无法创建特征对象时可以做什么” 。目前内容还是有点稀少,但是该资源值得浏览并加入收藏,时常学习。
2021学习Rust语言的最佳途径

Easy Rust

Easy Rust(dhghomon.github.io/easy_rust/),这是一本非常值得零基础的人入门的教程。这是另一本开放书籍,它以一种简单的方式解释和处理Rust的概念,使它们更易于理解和理解,尤其是对于那些初次接触Rust的人或来自其他高级语言的工程师。改善一些举例和类比非常适用,会让某些生涩的概念更好的理解,书中一些小例子也是非常好,比如对各种Rust类型的介绍例子,可以解决我们刚入Rust,不知道怎么下手写代码的情况。概述可以结合Rust官方的教程一起学习。喜欢看视频学习(虫虫强烈不建议)的同学也有个好消息,就是该书配套的视频教程也在油管上有了(youtube /playlist?list=PLfllocyHVgsRwLkTAhG0E-2QxCf-ozBkk)。
2021学习Rust语言的最佳途径

Learning Rust

Learning Rust是有关Rust的另一个全面开放指南。该站分为几个主要部分,介绍了Rust的基础知识,还有一些更高级的概念,例如所有权,借用,泛型和Traits等。该资源着重于提供简单的说明,并通过广泛涉猎丰富代码示例集的Rust代码来促进学习。
2021学习Rust语言的最佳途径

Rust Cookbook

Rust Cookbook自己定义为“一些简单示例的集合,这些示例演示了使用Rust生态系统板条箱(crates,Rust的类库)来完成常见编程任务的最佳实践”。Rust Cookbook也是一本开放书籍(使用mdbooks)构建,因此可以作为开放源代码项目完全使用。本书的重点是补充了上面已经介绍的许多资源。它不尝试探索语言的基础,而是采取实用的态度来应对常见的日常问题,例如并发,压缩,加密和数据结构。对于这些领域中的每一个领域,它都提供了许多有趣的示例,并提出了一些通常用于解决这些问题的最常见的第三方库。

too-many-lists

too-many-lists(rust-unofficial.github.io/too-many-lists/fourth.html)材料很意义,它提供了大量有关的主题,包括不良集(Bad Stack),良好集(OK Stack),持续集(Persistent Stack)等等的链接。
这些主要是围绕引用构建的,对于已经掌握一定Rust基础,然后可以通过这些主题解决日常codeing过程中遇到的很多问题和解决方法,通过一系列失败的尝试,将学到许多有关Rust和借用检查等的细节。
如果初步对Rust的知识充满信心,并且希望以实用的方式开始探索更高级的主题,则该材料是最佳参考资源。
2021学习Rust语言的最佳途径

出版书籍

Rust in Action(Tim McNamara)

Tim McNamara的《Rust in Action》(Manning出版),是最值得推荐的图书之一。
Rust in Action立足于实战,通过构建有趣的项目(例如浮点数抽象,CPU仿真器,自定义文件格式,键值存储数据库等)来讲解Rust概念。
图书已经写了很久,纸质版本书籍马上会发行。目前该书可以通过Manning MEAP程序购买(可以获得数字版本和所有更新)。
2021学习Rust语言的最佳途径

Zero to Production in Rust(Luca Palmieri)

《Zero to Production in Rust》(自出版)是一本关于Rust的后端Web开发得非常好的书。
2021学习Rust语言的最佳途径
Luca在这个项目上投入了大量时间和精力。目前由于本书尚在编写中,因此可以在新章节可用时立即阅读。很高兴看到社区如何参与该项目,以帮助作者从本书中获得最大收益。
作者在整本书中使用的特殊样式。在每一章中,在编写任何代码之前,都会有一整节内容涉及需求以及为什么我们真正需要构建特定功能。然后,每段代码都有其自己的测试,而更改实际上是通过严格的测试驱动方法引入的。对于技术书籍来说,这是非常不寻常的,但这实际上就是大家喜欢这本书的原因。阅读时,似乎正在与产品经理或团队负责人进行对话,并且意识到实际上可以在工作中使用Rust,没什么大不了的!
Luca正在整理一本围绕一个主要示例的书:构建电子邮件订阅平台。乍一看,人们可能会认为这是一个非常简单的示例,但实际上,该领域的复杂性足以填满整本书,最重要的是,在此过程中学习Rust。
从本书中可以学到很多东西,不仅与Rust有关,甚至与产品开发和良好的软件工程实践有关。

Rust 编程

Jim Blandy,Jason Orendorff和Leonora FS Tindall编写的《Rust编程》(O'Reilly)是最受欢迎的Rust书籍之一。从第一版的书中,可以看到这是一本非常扎实的书。第二版预计在2021年夏天出版。
2021学习Rust语言的最佳途径
在第一版中,有些章节(特别是在第一章中)有些难以理解,作者一直在倾听读者的反馈意见并确保第二版将要发布时付出了很多努力。更加精致和贴切。

Rust编程语言(Steve Klabnik,Carol Nichols)

Rust编程语言是我们在本文开头讨论的实际“官方”同名书籍的印刷版。除了可以享受阅读印刷书籍(并希望为作者提供支持)之外,其他没有什么可补充的,这是一本很棒的书!
2021学习Rust语言的最佳途径

博客

Amos (fasterthanlime)

如果想了解有关Rust的更多信息,为什么它是一种出色的语言,为什么以及何时变得不那么好,以及它如何变得更好,可以看看的Amos(fasterthanlime)的博客 。
Amos具有非常引人入胜的写作风格。他可以写很长的帖子,但是总是很有趣。
该博客中也提供了,可能大家都看过的一个教程《半小时了解Rust》。

Yoshua Wuyts

Yoshua在JavaScript社区中一直是很有影响力的开发人员。他一直鼓舞人心,最近几年中逐渐转入到Rust,他一直在博客中记录自己的Rust转型之旅。
他的博客是学习异步Rust,流,迭代器等的好地方。Yoshua从事多个开源项目,并从总体上深入了解了异步的优缺点。其中有个教程《Async HTTP》值得大家研读。

Steve Klabnik

史蒂夫·克拉伯尼克(Steve Klabnik)是Rust社区中最有影响力的人之一。社区中一些最具影响力的Rust帖子就是源于他的博客。在他的博客中,有很多关于软件工程的内容,以及其他语言及其问题(和解决方案)与Rust相比的更多内容。其中值得研读的文章有《Rust has finally outgrown me》

Tyler Neely

如果喜欢数据库,性能优化,分布式系统,请看这个博客。作者撰写了有关低级问题,技巧和窍门,Linux等的文章。他有一个开源项目 Sled ,如果想尝试使用嵌入式数据库和Rust 是一个了不起的工具。

Luca Palmieri

Luca Palmieri撰写的学习之旅博客,是学习Rust一种宝贵资源。他在在撰写的系列教程:《Rust从零到生产环境》( Zero to Production in Rust),一些些章节以博客文章的形式出版。Luca是一位非常多产的作家,确实有很多不错的资料,主要是关于使用Rust进行Web开发。
2021学习Rust语言的最佳途径

视频教程

如果更喜欢通过视频学习,或者只是喜欢观看视频资料,则可以参考一些油管频道和Twitch流,以及B站上

Ryan Levick

最值得推荐的油管Rust频道是 Ryan Levick的Streaming Rust(youtube /channel/UCpeX4D-ArTrsqvhLapAHprQ)。Ryan是微软的工程师,他一直在花费时间制作Rust视频材料。其频道内容千差万别,有适合初学者的介绍性视频,也有更高级的视频,如 static VS dynamic dispatch 或 FFI 。Ryan的教程擅长于解释简单和复杂的概念。每个视频都是一点点的珍宝,示例无处不在。他还在Twitch做直播教学。
2021学习Rust语言的最佳途径

Jon Gjengset

Jon Gjengset是另一位出色的Rust主播,他的教程,言简意赅,使复杂主题易于理解的能力。他目前有2个有关Rust的主要系列:
Crust of Rust:对于中级Rustucean来说是一个很好的系列,通过更高级的概念(例如迭代器,智能指针,变量生命周期等等)。
不安全纪事 :深入了解Rust unsafe的世界。
目前,不安全纪事 系列只有一个视频,但是作者最近在Twitter上发布了内容,期望他将更多的时间花在创建令人兴奋的新内容上。
2021学习Rust语言的最佳途径

Tim McNamara

Tim是《Rust in Action》的作者,他也是一位多产的视频流媒体。他一直对Rust视频系列进行了出色的介绍,该系列名为 Learn Rust Programming。我们认为该系列是从Rust开始的好地方。我们最喜欢的视频之一是Rust中的错误处理。他在油管和Twitch提供教程。

Genus-v programming

Genus-v programming是另一个很棒的YouTube频道,其中包含一些有趣的Rust材料。它主要专注于用Rust进行Web开发,这是最值得学习的方面。毫无疑问,最喜欢的播放列表中的一个是 Rust网站开发,它展示了如何使用Actix构建GraphQL API和身份验证服务器。
2021学习Rust语言的最佳途径

Systems with JT

Systems with JT是Jonathan Turner的YouTube频道。Jonathan是一个非常活跃的Rust开发人员,他是Nushell的作者,当然,在他的频道中,他有很多关于Rust的视频。Jonathan 最值得推荐的教程《how to create a line editor in Rust》系列。
2021学习Rust语言的最佳途径

B站视频教程

非主流世界下鲜有的Rust语言视频主播,虽然播放量都不咋高,但是聊甚于无,希望能再接再厉,有更好的教程和点播,Rust同学们路过时候不要错过,给他们三连哦:

原子之音

2021学习Rust语言的最佳途径

ChaosBot

2021学习Rust语言的最佳途径

杨旭老师的Rust权威指南系列:

MikeTang老师的《Rust唠嗑室》

开源项目

学习编程最重要的就是要实践,通过学习和参与实际项目是学习编程的秘籍和捷径,只亲自上手操刀,才知道为啥要这个概念,为啥这种写法可以提高效率等。通过学习Rust生态系统的一些优秀的项目可以短时间内快速提高我们的Rust功力:
Bat是cat命令的替代,但不光是简单替换,可以实现语言的高亮显示(非常漂亮)。
Clap是CLI帮助程序库。
Tokio,Async-std 和 Smol 异步运行时框架。
Serde 序列化库。
Rand 随机数生成。
Chrono 日期和时间库。
Amethyst和 Bevy 游戏开发框架。
mdbooks 通过markdown创建一本书。
TiKV 国产开源分布式数据Tidb的底层Key-Value 数据库
以及其他更多(欢迎大家补充)。