diff options
Diffstat (limited to 'src/pos.rs')
| -rw-r--r-- | src/pos.rs | 18 |
1 files changed, 11 insertions, 7 deletions
@@ -2,7 +2,7 @@ use std::ops::{Add, Sub}; use serde_json::Value; -use serde::{Serialize, Serializer, ser::SerializeTuple}; +use serde::{Serialize, Serializer, Deserialize, Deserializer}; use crate::util::clamp; #[derive(Debug, Hash, PartialEq, Eq, Clone, Copy, Default)] @@ -47,13 +47,17 @@ impl Pos { impl Serialize for Pos { fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error> - where - S: Serializer, + where S: Serializer, { - let mut tup = serializer.serialize_tuple(2)?; - tup.serialize_element(&self.x)?; - tup.serialize_element(&self.y)?; - tup.end() + (self.x, self.y).serialize(serializer) + } +} +impl<'de> Deserialize<'de> for Pos { + fn deserialize<D>(deserializer: D) -> Result<Self, D::Error> + where D: Deserializer<'de>, + { + let (x, y) = <(i64, i64)>::deserialize(deserializer)?; + Ok(Self{x, y}) } } |
