#Rust #serde https://github.com/serde-rs/serde/issues/723 [[serde]]には提供されてなさそう。 自作してみたけどCSVからのdeserializeでカラムが存在しないとここに入ってこない..。 ```rust pub mod option_yyyymmdd { use chrono::NaiveDate; use serde::{self, Deserialize, Deserializer, Serializer}; const FORMAT: &str = "%Y%m%d"; pub fn serialize<S>(date: &Option<NaiveDate>, serializer: S) -> Result<S::Ok, S::Error> where S: Serializer, { match date { Some(v) => { let s = format!("{}", v.format(FORMAT)); serializer.serialize_str(&s) } None => serializer.serialize_none(), } } pub fn deserialize<'de, D>(deserializer: D) -> Result<Option<NaiveDate>, D::Error> where D: Deserializer<'de>, { let s = match String::deserialize(deserializer) { Ok(v) => v, // XXX: これはダメなような。。 Err(e) => "".to_string(), }; if s.is_empty() { return Ok(None); } match NaiveDate::parse_from_str(&s, FORMAT) { Ok(v) => Ok(Some(v)), Err(e) => Err(serde::de::Error::custom(e)), } } } ```