blog.bouzuya.net

2023-09-23 bouzuya/serde-firestore-value で serde data model にない型を扱った

bouzuya/serde-firestore-value の続き。

  • Timestamp (TimestampValue) を読み書きできるようになった
  • LatLng (GeoPointValue)

serde data model には datetime はないしもちろん latlng もない。 data format として serde data model 以外の構造で書き込みたい場合は難しい。

今回は struct の name としてありえない文字列を設定してそれを使って Timestamp であることや LatLng であることを判断して分岐している。

この方法は toml が serde で datetime を書き込む場合に採っている方法を参考にした。

https://github.com/toml-rs/toml/blob/e82d0399c1e6c737d2dcbd644f43230cb0e2709f/crates/toml_datetime/src/datetime.rs#L108

https://github.com/toml-rs/toml/blob/e82d0399c1e6c737d2dcbd644f43230cb0e2709f/crates/toml_edit/src/ser/map.rs#L127-L129


ABC321 に参加した。 1367 → 1349 (-18) 。大きく落とした。実質 A-D の早解きをしないといけなかったのだけど、 C で変にハマってしまった。大した個数ではないことに気付けばすぐに解けたはずなのに……。

https://atcoder.jp/users/bouzuya/history/share/abc321


『シャーロック・ホームズの大追跡』を観た。たまに見たい感じの空気。

『プロメテウス』を観た。ほぼエイリアン。


今日のコミット。