Rustに入門してMemcached互換サーバを書いた
前々から積んでいた本を読んでついに Rust へ入門。 async,await が安定したらやりますと宣言していたため…
まず最初に読んだのが Rust Book と呼ばれるこの資料。 構文については一通り理解できるが、これを読んだだけでは全くコードは書けないなと感じる。
https://doc.rust-jp.rs/book-ja/
そして読んだ本は自転車の本。 メモリレイアウトを中心に所有権を解説していて非常に分かりやすい。
https://www.amazon.co.jp/dp/4297105594
別言語だが、Nim の Atomic Reference と Lifetime についての解説が非常に分かりやすいので、理解を深める手助けになったように感じる。 Rust のような構文を導入しなくとも、同様の仕組みは導入できる可能性もあるのか。
https://nim-lang.org/blog/2020/10/15/introduction-to-arc-orc-in-nim.html
そして memcached の互換サーバを実装。 まずは ASCII プロトコル。
- コード: https://github.com/kamijin-fanta/rust-sandbox-memcached/blob/master/binary/src/main.rs
- 仕様: https://github.com/memcached/memcached/blob/master/doc/protocol.txt
ベンチマークを走らせたかったので、パフォーマンスが良い Binary プロトコル版も実装。 こちらは TTL 等も対応。
- コード: https://github.com/kamijin-fanta/rust-sandbox-memcached/blob/master/ascii/src/main.rs
- 仕様: https://github.com/memcached/memcached/wiki/BinaryProtocolRevamped
機能が少ないので比較対象にはならないが、memcached より少し高いくらいの性能が出たので満足。