プログラミング言語Rustには個人的な興味があり、今のところ業務で触る機会は全く無いものの、Firefoxのソースコードに登場したり、効率的なCLIツールでよく採用されているのを目にするため、ゼロから何かを作り出せるほどでなくても他人のコードにContributionできる程度には言語仕様を知っていたいなと考えていた。
オライリーの書籍が網羅的かつ正確な内容と評判がよかったため、購入してコツコツとソースコードを写経して動かしていた。Rustの言語仕様があまりにも難しくて、途中で何度か止めてしまったり、再開した頃には同じ書籍の第2版が出てしまっていたのだけど……。何にせよ写経し終わってよかった。仕事で触ったことのある言語だと、ScalaやSwiftが近いかなって感想を持った。
自分が写経したコードは以下に置いている。初版の内容ゆえ、最新のRustだとコンパイル時に警告が出るところもある。
とにかくRustの難しさ、文字列周りの型や所有権の辺りは、すべてはメモリを安全に扱うためで、コンパイルさえ通ればもの凄く安心して実行できるのだけど、本当に理解が難しかった。ピュアRustで書かれたソフトウェアはかなり自信をもって実行できるだろうけど、現実には豊富なCのコード資産と連携するためにコンパイラでなくコードを書いた自身でメモリ管理するunsafeブロックを使わざるを得ない訳で、やっぱりどこかでメモリ破壊を起こしてしまう気はする。もちろん、本書ではその辺りもちゃんと扱われている。
個人的には、関数の戻り値としてunit(空のタプル型)が暗黙的に省略されている、っていう言語仕様がシンプルで綺麗だと感じた。オレオレ言語なんて一生作れる気がしないけど、言語設計者をやってる人はセンスが優れているんだなぁとわかる。
上にも書いた通り、既に第2版(の邦訳版)が出版されています。
書籍の中で登場するサンプルコードもGitHubにホスティングされており、有志の手によってメンテされてるみたい。
最近のツッコミ
参号館 日記(ariyasacca)