sunface/rust-course

Rust语言圣经

教程简介

  • 在线阅读: https://course.rs

``涵盖从入门到精通所需的 Rust 知识,目录及内容都经过深思熟虑的设计,同时语言生动幽默,行文流畅自如,摆脱技术书籍常有的机器味和晦涩感。

  • 深入度,在基础教学的同时,提供了深入剖析。浅尝辄止并不能让我们站上紫禁之巅

  • 专题内容,将 Rust 高级内容通过专题的形式一一呈现,内容内聚性极强,例如性能优化、手把手实现链表、Cargo和Tokio使用指南、async异步编程、标准库解析、WASM等等

  • 内容索引,作为一本工具书,优秀的索引能力非常重要,遗忘不可怕,找不到才可怕

  • 规避陷阱和对抗编译器,只有真的上手写过一长段时间 Rust 项目,才知道该如何规避常见的陷阱以及解决一些难搞的编译器错误,而本书将帮助你大大缩短这个过程,提前规避这些问题

  • Cookbook,涵盖多个应用场景的实战代码片段,程序员上网查询文件操作、正则解析、数据库操作是常事,没有人能记住所有代码,而 Cookbook 可解君忧,Ctrl + C/V 走天下

  • 配套练习题,像学习一门大学课程一样学习 Rust 是一种什么感觉?* + Rust语言实战* 双剑合璧,给你最极致的学习体验

总之在写作过程中我们始终铭记初心:为中国用户打造一门全面的、深入的、持续更新的 Rust 教程。 新手用来入门,老手用来提高,高手用来提升生产力。

🏅 贡献者

非常感谢本教程的所有贡献者,正是有了你们,才有了现在的高质量 Rust 教程!


🏆 贡献榜前三(根据难易度、贡献次数、活跃度综合评定):


Sunface 🥇

AllanDowney 🥈

JesseAtSZ 🥉

🏅 核心贡献者:


zongzi531

Rustln

1132719438

Mintnoii

创作感悟

截至目前,已写了 170 余章,110 余万字,历经 800 多个小时,每一个章节都是手动写就,没有任何机翻和质量上的妥协( 相信深入阅读过的读者都能体会到这一点 )。

曾经有读者问过 "这么好的书为何要开源,而不是出版?",原因很简单:只有完全开源才能完美地呈现出我想要的教学效果

总之,Rust 要在国内真正发展起来,必须得有一些追逐梦想的人在做着不计付出的事情,而我希望自己能贡献一份微薄之力。

但是要说完全无欲无求,那也是不可能的,看到项目多了一颗 🌟,那感觉...棒极了,因为它代表了读者的认可和称赞。

你们用指尖绘制的星空,那里繁星点点,每一颗都在鼓励着怀揣着开源梦想的程序员披荆斩棘、不断前行,不夸张的说,没有你们,开源世界就没有星光,自然也就不会有今天的开源盛世。

因此,我恳请大家,如果觉得书还可以,就在你的指尖星空绘制一颗新的 🌟,指引我们继续砥砺前行。这个人世间,因善意而美好。

最后,能通过开源在茫茫人海中与大家相识,这感觉真好 :D

开源协议

在开源版权上,我们选择了 No License,这意味着读者可以随意的 fork 和阅读,但是不能私下修改后再包装分发,如果有这方面的需求,请联系我们,望理解。

借鉴的书籍

站在巨人的肩膀上,能帮我们看的更远,特此感谢以下巨人:

  • Rust Book
  • Rust nomicon
  • Async Rust
  • 详细清单参见 这里

因为它们绝大部分是支持 APACHE + MIT 双协议的,因此我们选择了遵循其中的 MIT 协议,并在这里统一对借鉴的书籍进行说明。

社区 & 读者交流

  • 知乎: 孙飞 Sunface
  • QQ群 1009730433,用于日常技术交流
  • 微信公众号: 扫描下面的二维码关注公众号 Rust语言中文网
Issues

Collection of the latest Issues

HUGHNew

HUGHNew

Comment Icon2

https://github.com/sunface/rust-course/blob/e01f9c2e4595992690f00e18b60277d2e67ee401/src/basic/method.md?plain=1#L205Rust-Lang Book 此处的原文来看

All functions defined within an impl block are called associated functions because they’re associated with the type named after the impl. 那么它的意思应该是 对应类型定义在 impl 块中的函数都是 该类型的 关联函数 其中带有 self 的被称为方法(即 方法也是关联函数)

评论区此处提到过

p9s

p9s

Comment Icon0

常量可以在任意作用域内声明,包括全局作用域,在声明的作用域内,常量在程序运行的整个过程中都有效。对于需要在多处代码共享一个不可变的值时非常有用,例如游戏中允许玩家赚取的最大点数或光速。

关于以上这段话, 按照我的理解可能会编写出如下代码:

这样写的话, 并不能通过编译器, 所以我感觉这段话表述有歧义. 建议修改如下:

常量可以在全局作用域或者局部作用域内声明 , 常量的可见范围受声明的作用域限制, 只在声明作用域内有效. 对于需要在多处代码共享一个不可变的值时声明为全局常量非常有用, 例如游戏中允许玩家赚取的最大点数或光速。

sunface

sunface

Comment Icon0

在社区中,发现一些同学可能还搞不清楚,到底是使用引用还是值,到底是使用 move 还是 Copy,我觉得有必要通过文字 + 大示例的方式来解决这种疑惑。

归根到底,用好 Rust 需要按照 Rust 的思想和使用习惯来写代码,是否可以考虑在最佳实践里面增加一些如何按照Rust使用习惯来写 Rust 代码的章节?

一切都是为了方便其它语言过来的读者,更好的上手编写 Rust,专题名:如何写出 rusty 的代码

sunface

sunface

内容优化
Comment Icon0

给予读者循序渐进的引导式学习体验,目前并没能很好地让读者简单、清晰地理解生命周期。

一个简单理解生命周期的例子:#404

感谢 Rust语言社区 Rustln 的建议。

sunface

sunface

内容优化
Comment Icon2
  1. 增加老版本模块管理 mod.rs 的说明
  2. 增加一个 demo 项目,方便大家学习和对比新旧项目文件的组织方式

感谢 Rust语言社区 寒碧的反馈和建议。

sunface

sunface

Comment Icon3

非常欢迎大家为 Rust Course 提交 PR,包括但不限于:

  • 文字和内容勘误
  • 现有章节的内容增加和完善
  • 根据已有的issue,提交 PR,这些 issue 往往都有 新增内容内容优化新增章节 等标签

提交PR

你可以选择fork到本地提交,也可以在线提交:

  1. 在书籍页面右上角,点击编辑图标,进入在线编辑页面
  2. 修改并校对无误后,在当前页面下方,输入标题和描述, 并点击Propose changes提交修改 (该修改会提交到你名下自动fork的仓库中,并没有直接提交到sunface/rust-course中)
  3. 在新页面点击Create pull request创建PR
  4. 等待merge合并😋

如果是简单修改,建议在线提交,否则最好fork到本地进行修改,这样更安全。

Information - Updated Sep 17, 2022

Stars: 8.1K
Forks: 676
Issues: 22

This is an example of a Rust server that functions as a remote schema for...

Rust + Hasura Rust server that functions as a Hasura

This is an example of a Rust server that functions as a remote schema for...

Newport Engine is a modular 2D and 3D game engine built in Rust for Rust

It is designed to be easily extendable and easy to use

Newport Engine is a modular 2D and 3D game engine built in Rust for Rust

liboqs-rust: Rust bindings for liboqs

Qyantum Safe liboqs rust bindings

liboqs-rust: Rust bindings for liboqs

msgflo-rust: Rust participant support for MsgFlo

Flowhub visual programming IDE

msgflo-rust: Rust participant support for MsgFlo
Actix

1.2K

How to be a full stack Rust Developer

Read Rust the Rust blog posts at Steadylearner

How to be a full stack Rust Developer

Rust library translation (rust-src/rust-std/stdlib/rustlib translation)

This is the place to translate Having a documentation in your native language is essential if you don't speak English, and still enjoyable even if...

Rust library translation (rust-src/rust-std/stdlib/rustlib translation)

False Positive for rust-lang/rust#83583

The deprecation lint proc_macro_derive_resolution_fallback is intended to catch proc macro generated code that refers to items from parent modules that should not be in scope:

False Positive for rust-lang/rust#83583

xbuild is a build tool for rust and rust/flutter projects with support for cross compiling...

xbuild is a build tool for rust and rust/flutter projects with support for cross compiling and

xbuild is a build tool for rust and rust/flutter projects with support for cross compiling...

Rust: setup Rust with rustup

wabt: --sysroot value in the Makefiles when using a different target localtion for wasi-sdk)

Rust: setup Rust with rustup

How to be a full stack Rust Developer

Read Rust the Rust blog posts at Steadylearner

How to be a full stack Rust Developer

Snake game developed in Rust using rust-sdl2 crate

Snake game developed in Rust using

Snake game developed in Rust using rust-sdl2 crate

This is a game engine for rust in rust

I'm building it as a learning experience to try and better understand rust and what goes into making a game engine

This is a game engine for rust in rust
Facebook Instagram Twitter GitHub Dribbble
Privacy