Rust

1、介绍

Rust 是一门现代的系统编程语言,专注于安全,速度和并发。可以在此处查看与 Go 语言的比较。
安装 Rust 后,也就安装了 rustc,cargo,rustup 和其他标准工具。因此,先了解 Rust 工具链,然后再看看其他资源。

2、Rust工具链

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

Rustup

rustup用于安装 Rust 编程语言,能够轻松地在稳定版,beta 版和 nightly 版编译器之间切换,并保持它们的更新。
可以这样更新 Rust:

  1. $ rustup update
  1. # Installation of a toolchain
  2. $ rustup install stable
  3. # Set the default toolchain
  4. $ rustup default stable
  5. # Override the default toolchain in your directory
  6. $ rustup override stable
  7. # Display documentation in browser
  8. $ rustup doc [--std]
  9. # List supported targets
  10. $ rustup target list
  11. # Add and install a target to the toolchain
  12. $ rustup target add <target>
  13. # Modify a toolchain's installed components
  14. $ 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。

  1. # Compile the current package
  2. $ cargo build [OPTIONS]
  3. # Analyze the current package and report errors,but no build object files
  4. $ cargo check [ OPTIONS]
  5. # Remove the target directory
  6. $ cargo clean [OPTIONS]
  7. # Build this package 's and its dependencies' documentation
  8. $ cargo doc [OPTIONS]
  9. # Create a new cargo package
  10. $ cargo new [OPTIONS] PATH
  11. # Create a new cargo package in an existing directory
  12. $ cargo init [OPTIONS] [PATH]
  13. # Run a binary or example of the local package
  14. $ cargo run [OPTIONS] [-- ARGS]
  15. # Run the tests
  16. $ cargo test [OPTIONS][TESTNAME][-- TEST-OPTIONS]
  17. # Update dependencies listed in Cargo .lock
  18. $ cargo update [OPTIONS]
  19. # Install a Rust binary. Default location is $HOME/ .cargo/bin
  20. $ cargo install [OPTIONS] CRATE
  21. # List all installed packages and their version
  22. $ cargo install --list
  23. # Uninstall a Rust binary
  24. $ cargo uninstall [OPTIONS] [SPEC]

Cargo 的快速参考
同样的,详细内容可以看 Cargo 的参考手册,即 The Cargo Book:https://doc.rust-lang.org/cargo/

其他官方工具

其他更多官方工具可以通过这个链接查看:https://rust-lang-nursery.github.io/rust-toolstate/

3、Rust 免费在线书籍和资源

一般人学习 Rust 会找到官方的这本书:《The Rust Programming Language》,不过这本书不一定是最好的。但这本书毕竟是官方出的,可以后续翻阅相关主题。比如它通过许多示例和图表解释了很多细节。
如果喜欢通过示例的方式学习,Rust by Example 很适合你。它是可运行示例的集合,这些示例说明了各种 Rust 概念和标准库。一共有 20 多个示例。
image.png
可以从浏览器编辑和运行 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 错误和示例。
    在这个错误索引中:
    image.png

    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 章没有翻译)
    image.png

    rustlings

    rustlings 提供了一些小练习,在官方 GitHub 账号下,让你习惯于阅读和编写 Rust 代码。可以将其与官方的那本书搭配学习。
    安装好 Rust 后,可以通过如下命令安装 rustlings(Mac/Linux),Windows 下看 GitHub 首页的说明安装:

    1. $ cd ~
    2. $ curl -L https://git.io/install-rustlings | bash

    成功后,在终端执行如下命令:

    1. $ cd ~/rustlings
    2. $ rustlings watch

    这时会出现如下错误:
    2021-12-06-14-01-44-108465.png
    打开 exercises/variables/variables1.rs 文件,在 x = 5 前面加上 let,保存,这个 watch 界面变成:
    2021-12-06-14-01-44-429575.png
    也就是说,rustlings 中的练习都是故意未完成的。当完成一个练习后,将 // I AM NOT DONE 这句删除,rustlings watch 会自动监听下一个练习。
    而且每一个练习文件开头给了类似这样的提示:

    1. // Make me compile! Execute the command `rustlings hint variables1` if you want a hint :)

    可以按照它的提示,执行:

    1. $ rustlings hint variables1
    2. Hint: The declaration on line 12 is missing a keyword that is needed in Rust
    3. 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 的支持程度。
    image.png

    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

嵌入式开发

在 awesome-rust 中有很多库。

操作系统开发

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

其他语言绑定

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

ORM

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

10、进阶资源

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