blog.bouzuya.net

2025-09-17 enunm と string を変換する derive macro を提供する n 個目の crate をつくった / 下の子と焼肉

一昨日 (2025-09-15) の続きで、 RBAC: Role Based Access Control っぽいものを実装するときの型なんかを整理していて、 enum Permission の variant と String の変換の boilerplate code が良くないなと思った。

crates:strum を使えばいいんだろうけど、ごちゃごちゃしていて依存も多いのでできれば使いたくない。

代替を調べたら crates:parse-display が候補に出てきたので、ドキュメントを見てみたり、 bouzuya/rust-examples の parse-display1 を書いてみたりした。ぼくの結論としては悪くないのだけど、 Error の型が固定されるのが嫌だと感じた。

で、自作してみた。 DisplayFromStr を実装してくれる derive macro を。

bouzuya/rust-sandbox の enum-str-conv に置いている。先日調べた derive macro の実装手順に従って crates:trybuild などを使いながら書いた。

たぶん、こういう crate は 100 個はあると思う。思うけど、明日にでもリポジトリを切り分けて crates.io に公開しようかな。どうせほとんどの人は strum 使うわけだし、ゴミみたいな crate が 1 個増えるくらい気にしなくてもいいでしょ。


焼肉に行った。下の子が肉が燃えているのを見て「かじだー」と叫ぶので「しーっ」と静かにさせるのを何度か繰り返した。


今日のコミット。