rustでdiscordのbotを作ってみたくて下調べ(3) - 北海道苫小牧市出身の初老PGが書くブログ で serenity を紹介したが、最近 async版 の開発が進んでいる。試してみたが、まともに動くようだ。ベンチマークなど取っていないので、 async にする価値があるのかはよくわかっていないが、 Rust の async/await を使ってなにか作ってみたいというのがもともとのモチベーションなので、これを使ってみることにする。まだ PR の段階でマージされるまではしばらくかかりそうなので、利用したければ Cargo.toml
へ以下のように書く。
[dependencies.serenity] git = "https://github.com/Lakelezz/serenity.git" branch = "await"
触ってみたところ、早速不具合を2つ見つけたので PR を送っておいた。
- fix building without `framework`-feature by hiratara · Pull Request #2 · Lakelezz/serenity · GitHub
- fix dispatch function by hiratara · Pull Request #4 · Lakelezz/serenity · GitHub
ところで、前回 tokio-tungstenite を使って自前実装を作っていると書いたが、実は後継(ただのフォーク?)の async_tungstenite - Rust なんてものも開発されているようだ。試してはいないが tokio だけではなく async-std にも対応していそうなので、 WebSocket の async/await 実装としてはこちらも検討するといいだろう。