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 を書き込む場合に採っている方法を参考にした。
ABC321 に参加した。 1367 → 1349 (-18) 。大きく落とした。実質 A-D の早解きをしないといけなかったのだけど、 C で変にハマってしまった。大した個数ではないことに気付けばすぐに解けたはずなのに……。
https://atcoder.jp/users/bouzuya/history/share/abc321
『シャーロック・ホームズの大追跡』を観た。たまに見たい感じの空気。
『プロメテウス』を観た。ほぼエイリアン。
今日のコミット。
- rust-atcoder 1 commit
- serde-firestore-value 25 commits
- Add LatLng, Option<LatLng> support
- Add option_timestamp mod
- Add todos
- Reduce todo
- Apply ValueExt to deserializer tests
- Extract crate::de::firestore_value_deserializer mod
- Extract crate::de::firestore_enum_deserializer mod
- Extract crate::de::firestore_struct_map_value_deserializer mod
- Add FirestoreTimestampValueDeserializer::new
- Extract crate::de::firestore_map_value_deserializer mod
- Extract crate::de::firestore_array_value_deserializer mod
- Extract crate::de::error mod
- Extract crate::de::value_type_ext mod
- Extract crate::de::value_type_name mod
- Extract crate::de::value_ext mod
- Rename serializer mod to ser mod
- Rename deserializer mod to de mod
- Improve tests for deserialize timestamp
- Add deserialize timestamp
- Move FirestoreTimestampValueSerializer::NAME to FirestoreValueSerializer::TIMESTAMP_STRUCT_NAME
- Apply ValueExt to serializer tests
- Change Serializer::Ok to Value
- Extract firestore_value_struct_serializer mod
- Add value_ext mod
- Add serialize timestamp