Rustのことをもっと理解りたくて『コンセプトから理解するRust』を読んだ。

前提#

筆者のRustの知識はTour of RustThe Rust Programming Languageを読んだり簡単なツール1を作ったことがある程度で、非同期処理をスラスラ書けたり、スムーズに人に教えたりできるレベルではない。

過去にThe Rust Programming Languageを読んだときもスマートポインターまわりなどは飛ばしつつ読んでいたので本書での学びは多かった。

学び#

  • Boxについて理解した。
  • Rc, RefCell, Weak周りをなんとなく理解した。たぶん空では書けないが、エラーになったら調べて解決できるくらいの理解にはなったはず。
  • トレイト境界についてちょっとわかった。
  • クロージャ, Fn, FnMut, FnOnceについて理解できた。
  • 簡単な非同期処理の仕組みがわかった。

今まで全然わかっていなかったこれらの概念が少しだけわかった。やはりコードを書き散らかすだけでなく体系的なインプットも大事…。(それはそう)2

おそらく今後Rustを書いたりコンパイラと対話したりしていくともう少し深く理解していけると思う。3

全体を通してコード例が豊富だったので手元で動かしながら理解しやすくてとてもありがたかった。

まとめ#

Rustの力がまた少しついた。

Rustを学ぶとRust自体への理解が深まるだけでなく、少なからずコンピュータの仕組みに近い低レイヤな部分の理解も一緒に深まるので勉強になる感覚があって楽しめた。

非同期処理周りはあまりちゃんと勉強したことがないので次はこの本を読んでみようと思う。(サンプルコードが主にRustで書かれているらしいのでこの本での学びも活かせそう)4

おまけ#

The name “Tokio” is derived from Tokyo and mio, and the Tokio logo vaguely resembles the city emblem of Tokyo.

Rustの非同期ランタイムのtokioの名前の由来の一部は東京らしい。

あとロゴも東京都の紋章を彷彿とさせるデザインになっているらしい。(実際調べてみたら似ているというかほぼ同じだったw)


  1. fzf-makeというTUIツールを書いている。あとそういえばnand2tetrisもRustで書いていた。 ↩︎

  2. 趣味のプログラミングなのでRustを覚え始めた頃は楽しさ優先でまあ動けばOKという気持ちで書いていたが最近になってちゃんと理解したくなってきたので学んでいる。 ↩︎

  3. あるいは各種概念を自作するという選択肢もあるかもしれない。Arcとか非同期ランタイムとか…。 ↩︎

  4. 他には詳解 Rustアトミック操作とロックAsync Rust RustによるWebアプリケーション開発 設計からリリース・運用まで あたりもとても気になっている。 ↩︎