Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- use serde::de::{self, Deserializer};
- use serde::Deserialize;
- fn main() {}
- struct Duration {
- secs: u64,
- nanos: u32,
- }
- impl<'de> de::Deserialize<'de> for Duration {
- fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
- where
- D: Deserializer<'de>,
- {
- // Comment out these lines and uncomment the manual impl of Deserialize
- // to make it work
- #[derive(Deserialize)]
- enum Field { Secs, Nanos }
- // enum Field { Secs, Nanos };
- //
- // impl<'de> Deserialize<'de> for Field {
- // fn deserialize<D>(deserializer: D) -> Result<Field, D::Error>
- // where
- // D: Deserializer<'de>,
- // {
- // struct FieldVisitor;
- //
- // impl<'de> Visitor<'de> for FieldVisitor {
- // type Value = Field;
- //
- // fn expecting(&self, formatter: &mut fmt::Formatter) -> fmt::Result {
- // formatter.write_str("`secs` or `nanos`")
- // }
- //
- // fn visit_str<E>(self, value: &str) -> Result<Field, E>
- // where
- // E: de::Error,
- // {
- // match value {
- // "Secs" => Ok(Field::Secs),
- // "Nanos" => Ok(Field::Nanos),
- // _ => Err(de::Error::unknown_field(value, FIELDS)),
- // }
- // }
- // }
- //
- // deserializer.deserialize_identifier(FieldVisitor)
- // }
- // }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement