Advertisement
Guest User

Untitled

a guest
Oct 14th, 2019
105
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.59 KB | None | 0 0
  1. use serde::de::{self, Deserializer};
  2. use serde::Deserialize;
  3.  
  4. fn main() {}
  5.  
  6. struct Duration {
  7. secs: u64,
  8. nanos: u32,
  9. }
  10.  
  11. impl<'de> de::Deserialize<'de> for Duration {
  12. fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
  13. where
  14. D: Deserializer<'de>,
  15. {
  16. // Comment out these lines and uncomment the manual impl of Deserialize
  17. // to make it work
  18. #[derive(Deserialize)]
  19. enum Field { Secs, Nanos }
  20.  
  21. // enum Field { Secs, Nanos };
  22. //
  23. // impl<'de> Deserialize<'de> for Field {
  24. // fn deserialize<D>(deserializer: D) -> Result<Field, D::Error>
  25. // where
  26. // D: Deserializer<'de>,
  27. // {
  28. // struct FieldVisitor;
  29. //
  30. // impl<'de> Visitor<'de> for FieldVisitor {
  31. // type Value = Field;
  32. //
  33. // fn expecting(&self, formatter: &mut fmt::Formatter) -> fmt::Result {
  34. // formatter.write_str("`secs` or `nanos`")
  35. // }
  36. //
  37. // fn visit_str<E>(self, value: &str) -> Result<Field, E>
  38. // where
  39. // E: de::Error,
  40. // {
  41. // match value {
  42. // "Secs" => Ok(Field::Secs),
  43. // "Nanos" => Ok(Field::Nanos),
  44. // _ => Err(de::Error::unknown_field(value, FIELDS)),
  45. // }
  46. // }
  47. // }
  48. //
  49. // deserializer.deserialize_identifier(FieldVisitor)
  50. // }
  51. // }
  52.  
  53. }
  54. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement