前言
在大概一年之前周围就有同学开始学习 Rust,自己也有类似的打算,但是一直没有动手。这次借着 rcore-os 开源操作系统训练营的机会,终于开始了学习 Rust 的过程。
学习过程
由于平时的时间比较少,训练营的在线课我很少有时间跟着上,我的学习方式主要是阅读 Rust语言圣经,如果遇到没看到过的问题/知识点,我会去查阅 Rust文档。
在前期我的计划是学完 Rust 圣经的一部分,然后完成 Rustling 对应部分的习题,但是由于 Rustling 规定了完成的顺序,我的学习过程就变成了以完成 Rustling 为主线,遇到不会的问题去学习 Rust 圣经的对应部分/查阅 Rust 文档。
我的 Rustling 完成过程大概如下:
- 2024/4/8,加入 classroom
- 2024/4/10,完成 intro, variables, functions,这些部分比较简单
- 2024/4/16,完成 vecs, move_semantics, if, primitive_types,这里学习了 Vec 集合类型,以及 Rust 中很重要的所有权、引用的内容,并完成了对应的习题。虽然内容比较难,但是习题的难度并不是很难,因为题目给的引导比较多,导致这里对引用的学习并不是很透彻,后面会提到。
- 2024/4/18,完成了 enum, structs,这个部分比较简单
- 2024/4/23,完成了 errors (错误处理),generics (泛型), hashmaps, modules, strings, traits,这个阶段是以为 26 号要截止,不想拖队友的后腿,然后将完成 rustling 作为了主要的任务去做,进度快了很多;这个阶段的习题也不是很难,主要是学习一些标准库内容的使用
- 2024/4/24,完成了 clippy (一个 debug 提示工具), conversions, iterators, macros, smart_pointers, threads, tests,这部分习题的难度还是比较大的,其中 smart_pointers 和 threads 部分我只是勉强做完了习题,其中使用的
as_mut()
,Arc
等因为没有专门学习其实并不是很懂 - 2024/4/26,用两天时间完成了 10 个数据结构/算法题目,在做前三题的时候觉得是有点吃力,算法、写代码都会,但是写出来之后过不了编译,各种迷茫,因为引用和智能指针没有学好,这里花了些时间去补课。后面的7题就比较顺利了,大概一中午就写完了。
- 终于,吃到了螃蟹!
总结
不可否定的是,通过这个阶段的练习,我基本掌握了 Rust 的使用。如果全职学习的话 (6-8h/day),我觉得大概一周的时间就可以完成,但由于我还有日常的工作,所以学习过程其实是比较赶的。
关于学习路线的建议:
- 可以先阅读相关书籍(比如 Rust语言圣经,基础部分写的还是很好的)学习 Rust 的语言基础,并完成 Rustling 的基础部分;
- 之后就应以完成 Rustling 为主线,遇到问题可以看对应部分 Readme 中提供的参考资料,也可以自己去搜索相应的知识进行学习,因为这部分 Rustling 和书籍中讲的内容已经不完全对应了,所以应以 Rustling 为主。