summaryrefslogtreecommitdiff
path: root/src/pos.rs
diff options
context:
space:
mode:
authortroido <troido@protonmail.com>2020-09-24 09:38:18 +0200
committertroido <troido@protonmail.com>2020-09-24 09:38:18 +0200
commit523a635dc88bc7890a0e1d3c062a8165259761d6 (patch)
tree56b0e379349250ecbf75eda6ccdb1f6f791dcbb1 /src/pos.rs
parentdaaf3a25e9c6cc1843b0a3aff71d4142f83dde10 (diff)
don't try to read into the json data structure all manually
Diffstat (limited to 'src/pos.rs')
-rw-r--r--src/pos.rs18
1 files changed, 11 insertions, 7 deletions
diff --git a/src/pos.rs b/src/pos.rs
index 9263561..4c0d9cc 100644
--- a/src/pos.rs
+++ b/src/pos.rs
@@ -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})
}
}