2026-05-09 bouzuya-firestore-client に sealed trait を追加
bouzuya/bouzuya-firestore-client の #[allow(private_bounds)] を不要になるよう修正した。
bouzuya-firestore-client は Rust で書かれた Node.js Firestore SDK に近いインタフェースを持つ Firestore Client 。
#[allow(private_bounds)] を必要としていたのは IntoFilter trait と IntoFieldPath trait を使用していた箇所。これらの trait を外部から実装されないように private にしていたが、一方で pub fn の引数のトレイト境界として使用していた。
Sealed trait を追加して対応した。
Sealed trait は Rust API ガイドラインにも記載されているテクニックのひとつで、 private な mod の中に pub な trait を定義し、それを super trait とすることで実装できなくする方法。 https://rust-lang.github.io/api-guidelines/future-proofing.html#sealed-traits-protect-against-downstream-implementations-c-sealed
なんとなくこれでいいんだろうか感はあるが、一応 trait は pub であり、警告を回避できるし、一般的なパターンではある。
下の子の図書館カードをつくった。もう随分前から貸出・返却はできるようになっていたけど、ぼくのカードで扱っていた。来年には小学生だし……と思ってつくった。上の子も似たような時期だったかな……。
今日のコミット。