• 分享发现Rust
  • 征集你所知道的 Rust 学习资料、上手项目、玩具/工具、落地场景等

前几天也就是我们的国庆节期间,大概 10 月 4 号的样子,消息称对 Rust 的基础支持 PR 已经合入 Linux Kernel 6.1 。在我看来这是 Rust 发展历程的又一个里程碑事件。当然系统内核开发离我很远,作为一个练习时长两年半的半吊子 Rustacean 我只是非常高兴这门开发语言受到越来越广泛的认可,这意味着我的业余兴趣在可预见的短期内不会变成沉没成本(笑)。

所以在 QQ 群里我抛了个很平凡的问题,那就是希望大家可以分享 Rust 相关的教程。以及这也是这个帖子的目的,我会在下面整理出群聊讨论所涉及到的一些资料,以及向从来没听过 Rust 或者对它感兴趣的同学肤浅地介绍一下这门语言(仅凭记忆)。当然我的本职工作是前端开发,业余时间用 Rust 做一些小工具而已,并不专业,权当抛砖引玉,我更感兴趣大家如何学习 Rust 以及如何用 Rust 做什么,欢迎回帖评论留言。


Rust 是什么

Rust 和 Go 一样,是近些年新兴和逐渐流行的编程语言,但它的定位又不太一样,目前公认是更偏向于系统开发,所以你会发现虽然也有像 actix 等的 Web 开发框架,但在 CRUD 的 HTTP 业务里面很少 Rust 的实践。它由 Mozilla 于 2012 年发布第一个版本,并用于开发 Firefox 的新一代实验性渲染引擎 Servo 。最初目的就是重写和替代部分 C++ 代码,以相对更好的安全性、并发性著称(至于部分说法中更好的性能就见仁见智,真要性能还得是 C 内嵌机器码或者是纯汇编,逃)。随着时间的推移,越来越多开发者参与贡献,越来越多的开源和商业项目落地,并独立于 Mozilla 成立了基金会,它也就拥有了自己的生命力。


最新的 TIOBE 排行中, Rust 名列 26 名。它一度冲击过前 20 的位置但目前还没稳住。虽然远不及 12 名的 Go ,但你会意外地发现像 Dart / Scala / Kotlin 等近些年的明星语言也紧随 Rust 身后。受样本影响这类排行可能有不准确的地方(比如我认为 Kotlin 已经在安卓开发中相对较大范围使用),仅供参考。

相关推荐:
怎样看待 Mozilla 发布的 Rust 语言? - laiyonghao的回答 - 知乎

Rust 能用来干什么

就我个人而言,我也是主要用来替代 C++ 的。不算中学课外阶段,大学期间划水了 2 年半以上大概 3 年左右的 xCPC 程序设计竞赛,主力语言就是 C/C++ ,我的很多系统性的学习(比如 TCP 网络协议 / 操作系统原理 / Nginx 源码)都是使用 C/C++ 上手,或者就是教材资料用的是类 C 的伪代码;我在 LeetCode 上刷的题,我的很多个人整活项目(比如解析 pac 的代理服务,上家公司用 pac 规则做内网跳板机寻址和外网代理, macOS 对 pac 规则的支持挺烂,不是真全局),也都是用 C/C++ 来完成。它不好找工作(我太菜),但不妨碍我继续用我曾经最喜爱的语言继续整活。

但随着 C++ 的发展,它的历史包袱越来越重,充满了各种出于向下兼容考量的妥协,同时各种奇怪的语法用法层出不穷,它很难学好,也很难用好,更重要是我的精力跟不上对新标准的学习了。这时候有一门更现代化的编程语言横空出世,如果我晚出生几年,如果现在让我重回大学二选一,我当然会选 Rust 了哈哈哈哈。

另外你也可以看到很多开源或商业项目也在用 Rust [2],它们用 Rust 做什么呢?
数据库:国内最著名的当然是 PingCAP 的 TiKV [1],部分大企业同学应该熟悉,其内部有在用 TiDB 的;知名度小一点的还有 TensorBase / CeresDB / RisingWave 等等;
云原生:微软的 Krustlet ,华为的 StratoVirt 等,不在这行我也不熟;
系统开发:除了上面提到 Linux Kernel 中的 Rust 基础支持,更为人熟知的是 coreutils 提供了 gnu utils 的 Rust 版本,例如 mkdir / rmdir 等工具都有提供;还有 ripgrep 则是 Rust 版 grep (这两个应该站内早期同学有听说过,好像在 Missing Semester 的工具篇讨论中有扩展到,另一个比较强的搜索工具是 The Silver Searcher 但它是 C 实现的);
命令行终端:说实话没有 iTerm2 好用的 Alacritty
RPC 框架: 顺带给敝司的 CloudWeGo 团队推个广[3], Volo 的前身内部版在字节内也有一定程度的落地和整活;
还有更多有趣的项目,一时间我也想不起来,欢迎大家补充。

相关参考:
[1] 黄东旭.我们为什么要选择小众语言 Rust 来实现 TiKV?[EB/OL].[2017-09-21]. https://www.infoq.cn/article/2017/09/select-minority-language-rust-ti
[2] 张汉东.2021 年 Rust 行业调研报告[EB/OL].[2021-06-25]. https://www.infoq.cn/article/umqbighceoa81yij7uyg
[3] 字节跳动技术团队.字节跳动开源 Volo:国内首个基于 Rust 语言的 RPC 框架[EB/OL].[2022-08-31]. https://www.infoq.cn/article/NR3Rd5YlUkarAhKyrZUe

我们如何学习 Rust

终于来到了重点,如果你之前没接触过 Rust 想要尝试一下,或者深入了解,以下是我个人所知的和之前群内讨论的资料的汇总。

首先是官方教程,没错,官方除了文档之外还自带教程,基本上你看一遍和跟着练一遍就能初步上手 Rust :
Rust 电子书: The Rust Programming Language
Rust 训练: Rustlings
Rust 示例: Rust by examples

我所知的还有微软的基于 VS Code 的 Rust 学习路径 Take your first steps with Rust ,比较偏基础向。

以及我在 Q 群引用对应帖子时的最初想法:斯坦福操作系统原理课程 CS110 有个附加课程 CS110L 里面有讲解使用 Rust 规避常见内存安全性问题;

群友[@先驱者]提到一个清华大学的 Rust 程序设计训练课程;另外分享了一个方向是用 egui + rusqlite 写一个简单的 sqlite gui 操作;
群友[@之外]提到一个 UNSW 的课程 Solving Modern Programming Problems with Rust
针对群友[@浮生若梦]的问题「 Rust 除 rbatis 以外较为好用的 orm 库」 @johnbanq 提到可以使用 diesel


此外,欢迎大家推荐更多 Rust 的学习资料,以及可以用 Rust 整活的小项目和想法呀!

去年有使用 Rust Book 简单学了学 Rust,也完成了 Rustlings 的大部分习题 。体验上感觉非常「现代」,比写 C 要简洁、智能多了。

入门阶段的练手项目的话,我厚脸皮推荐一个自己写的:ryan4yin/video2ascii-rs

这是一个将视频转换成字符画的小练手项目,我很久前写过一篇文章介绍它的思路:视频转字符动画-Python-60行代码 ryan4yin/video2ascii-rs 是这个项目的 Rust 版本。

补充一个布朗大学的 Rust Book,和官方 Rust Book 的区别是加了 Quiz,可以答题检验一下自己,大概是每个小节一个 Quiz。只覆盖前 13 章(大概也够了)

顺便推荐一个做 Rust 内容视频的 Youtuber

4 天 后
15 天 后

最近在rust群里面划水的时候看到一个计划,感觉还不错
据说是挺好学的,可以适宜应届毕业生或者准备应届的毕业生来进行学习的计划,在想最近要不找个时间完整的完成一下这个计划,但是又害怕是否自己有足够动力,因此想问下大家的看法
https://learn.pingcap.com/learner/talent-plan/rust-programming

特此附上部分前置需求
Prerequisites
Those taking this course should:

have the equivalent of an undergraduate computer science education,
have intermediate-level experience in some programming language,
be comfortable working in the terminal and command line,
know how to use git,
have novice-level experience with parallel programming in some language,
have novice-level experience with asynchronous programming in some language,
have novice-level experience writing code to query a database, SQL, NoSQL, NewSQL, key-value, or otherwise.
have read The Rust Book in its entirety,
have written some Rust code, including the projects from the book:
programming a guessing game,
building a command-line program and
building a multithreaded web server.
To reiterate — read The Rust Book before taking this course. It is not necessary to have more than novice-level knowledge or experience with Rust, but this course does not teach Rust basics.

If you can check all the above boxes then you are ready for this course. If not, we have some suggestions for how to learn the prerequisites.

Get started now - view the lesson plan.

    OneDragon424 我觉得没有什么问题,大多数的企业课程、训练营最终目的都是招聘。所以他们推出这个课程也是希望可以发掘一些能够用 rust 干活的好苗子,能更大概率投递他们岗位,更大概率为他们工作。你比如说字节也会搞一些前端训练营、服务端训练营,都是为了能够双向奔赴。但这类课程你应该看作走向能干活道路上的起点,自身的学习还是不能落下的。至于个人时间规划还是看你自己,不管你是明年毕业还是后年毕业,现在开始学两三个月到春招应该没啥问题。

    不过注意下它的前置要求哈,不是面向零基础的:

    have read The Rust Book in its entirety,
    have written some Rust code, including the projects from the book

    read The Rust Book before taking this course. It is not necessary to have more than novice-level knowledge or experience with Rust, but this course does not teach Rust basics.

      hsxfjames 这个部分的基础我还差一点,rust book 上面比如说最后的分布式的那个大项目就没有完成,不过现在还在向前推进(主要是英语实在太生草了...),最近还在忙软设

      刚开始知道 rust 就是因为发现了很多重写的命令行工具

      比如我常用的:

      • ls → exa
      • ps → procs
      • bat → cat
      • dust -du
      • ...

        Mancuoj 后面两个顺序写反了吧

        不得不说用rust写的cli工具是真的好用,跨平台性还算可以

        8 天 后

        The Rust Book: https://doc.rust-lang.org/nightly/book/
        It contains pretty much everything you need to know about Rust.

        Rustlings: https://github.com/rust-lang/rustlings
        Small exercises to get you used to reading and writing Rust code.

        Exercism Rust Track: https://exercism.org/tracks/rust
        Learn Rust by doing exercises!

        Learning Rust: https://learning-rust.github.io/
        More stuff to learn from is always better!

        This Week In Rust: https://this-week-in-rust.org/
        A weekly newsletter about Rust updates, featured crates, job offers, ongoing pull requests, and a lot more!

        Rust By Example: https://doc.rust-lang.org/stable/rust-by-example/
        A nice tutorial for people who already know how to program.

        Rust First Steps: https://docs.microsoft.com/en-gb/learn/paths/rust-first-steps/
        Microsoft's own Rust tutorial.

        Tour of Rust: https://tourofrust.com/
        A step by step guide through the features of the Rust programming language.

        The Little Book of Rust Macros: https://veykril.github.io/tlborm/
        Everything you need to know about macros.

        Learn Rust Page: https://www.rust-lang.org/learn
        Index for Rust's documentation page. Includes things such as the Edition Guide, Cargo Book, etc.

        Awesome Rust: https://github.com/kud1ing/awesome-rust
        A huge list of the best crates and tools you could possibly think of!

        Rust FFI Omnibus: https://jakegoulding.com/rust-ffi-omnibus/
        How to use Rust code in other languages

        Rust Cheatsheet: https://cheats.rs/
        List of a bunch of common Rust knowledge.

        reference from discord of rust

        2 年 后

        最近在学Rust,来给这个贴再mark几个学习资源~

        • Learn Rust by writing Entirely Too Many Linked Lists ( github / site )

          • 针对 Rust 2018 编写的教程,从链表的视角熟悉 Rust 语法🍬
        • Comprehensive Rust 🦀 ( github / site )

          • Google 出品,可以根据 schedule 安排大致学习进度
        • Programming Rust, 2nd Edition, O'Reilly ( site )

          • 23年秋图灵出了对应的翻译
          • Github 也有一版由个人翻译的版本,两个翻译风格不太一样,但这本有彩插
        • Rust in Action ( site )

          • 这本很对我胃口
        • Code Like a Pro in Rust ( site )

        这些材料自己调整着阅读会比较方便

        (来学点OCaml也不错😋

        8 个月 后

        © 2018-2025 0xFFFF