Guest User

Untitled

a guest
Jan 19th, 2019
63
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 0.77 KB | None | 0 0
  1. #[derive(Debug)]
  2. pub struct Lazy<T: Loadable> {
  3. id: Uuid,
  4. _marker: std::marker::PhantomData<T>,
  5. }
  6.  
  7. mod impl_serde {
  8. use super::Lazy;
  9. use crate::data::Loadable;
  10. use serde::{Deserialize, Deserializer, Serialize, Serializer};
  11. use uuid::Uuid;
  12.  
  13. impl<'de, T: Loadable + 'de> Deserialize<'de> for Lazy<T> {
  14. fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
  15. where
  16. D: Deserializer<'de>,
  17. {
  18. let id = Uuid::deserialize(deserializer)?;
  19. Ok(Lazy::new(id))
  20. }
  21. }
  22.  
  23. impl<T: Loadable> Serialize for Lazy<T> {
  24. fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
  25. where
  26. S: Serializer,
  27. {
  28. self.id.serialize(serializer)
  29. }
  30. }
  31. }
  32.  
  33. i
Add Comment
Please, Sign In to add comment