nanjj

Rust再学习

Table of Contents

<2021-08-24 二>,雨夜

1. 缘起

几年前我曾经学习过Rust。其时,我发现Rust编译速度很慢,语法有些烧脑。 于是浅尝辄止一下Rust,很快就转向了Go语言,并深深迷恋。不知为何,当 时并没有注意到Cargo包管理的存在。

Go语言的包管理没有一步到位。Go最初包管理是分布式的,有些像Java Classpath的设计,叫GOPATH,是线性的。而Java也渐渐引入OSGI的设计,进一 步模块化。GO包管理也出现许多第三方,最终统一为 Go Mod 。不能说 Go Mod 多成功,只能算不失败罢了:中间走了弯路,最终也没有达到理想的状况,但的 确是工作的。

Go另一块薄弱项是和 C 语言的交互,上下文切换性能差太多了。这也是没有办 法的事,算引入 GC 的代价。但和 C 关系不好就阻碍了Go向下发展。有用Go写 操作系统的,但从没人提用Go开发Linux内核。

最近我发现Cargo设计干净,有美感,也实干,工程气息浓郁。 BottleRocket项目把Cargo用到了极致,但也远没有探到Cargo的上限。

2. 在学

这次Rust再学,没有把语言放在前面学,而是先把周边搞清楚:

  1. Cargo日常使用,
  2. Workspace, Package, Crate, Module依次搞清楚,
  3. Unit Testing如何写,
  4. Rust Doc以及mdBook

最后才慢慢看Rust的语法: 1. Common Programming Concepts,

  1. Ownership,Smart Pointers,
  2. Fearless Concurrency

在看mdBook时候,顺便把本博客更新了下。

3. 过往

读过去自己写的东西,是一个逐渐了解自己的过程。好似在读一封封来自过去的 信,有恍若隔世的感觉。过去自己的想法甚至能解当今的困惑。细细思索,倍感 神奇。

由此打算重拾写作,为将来的自己,提供一点寻找初心的线索。