use chrono::NaiveTime;
use serde::{self, Deserialize, Deserializer};
pub fn timestamp<'de, D>(deserializer: D) -> Result<Option<NaiveTime>, D::Error>
where
D: Deserializer<'de>,
{
let s: Option<String> = Option::deserialize(deserializer)?;
if let Some(s) = s {
if let Ok(time) = NaiveTime::parse_from_str(&s, "%H:%M:%S") {
return Ok(Some(time));
}
if let Ok(naive) = NaiveTime::parse_from_str(&s, "%H:%M:%S%.f") {
return Ok(Some(naive));
}
dbg!("Parsing time failed: {}", &s);
}
Ok(None)
}