chiark / gitweb /
wip serde for gamestate
authorIan Jackson <ijackson@chiark.greenend.org.uk>
Mon, 13 Jul 2020 23:39:49 +0000 (00:39 +0100)
committerIan Jackson <ijackson@chiark.greenend.org.uk>
Mon, 13 Jul 2020 23:39:49 +0000 (00:39 +0100)
src/gamestate.rs
src/imports.rs

index 0d9ed25718b583fbbcc9c4af90721455d1cab973..5350e5bfb5846886a3566edf6495e4c07aeeb2cd 100644 (file)
@@ -143,20 +143,18 @@ impl Display for ZCoord {
 // ---------- game state - rendering etc. ----------
 
 impl Serialize for LogEntryRef {
-  fn serialize<S>(&self, s: S) -> Result<<S as Serializer>::Ok, <S as Serializer>::Error> where S: Serializer {
-    self.0.serialize(s)
+  #[throws(S::Error)]
+  fn serialize<S:Serializer>(&self, s: S) -> S::Ok {
+    self.0.serialize(s)?
   }
 }
 
 impl<'d> Deserialize<'d> for LogEntryRef {
-  fn deserialize<D>(d: D) -> Result<Self, D::Error> where D: Deserializer<'d> {
-    todo!()
+  #[throws(D::Error)]
+  fn deserialize<D:Deserializer<'d>>(d: D) -> LogEntryRef {
+    let l : LogEntry = <LogEntry as Deserialize<'_>>::deserialize(d)?;
+    LogEntryRef(Arc::new(l))
   }
-  /*
-  fn deserialize<O>(o:D) Result<Self, S::Error>`
-  fn deserialize<S>(&self, s: S) -> Result<<S as Serializer>::Ok, <S as Serializer>::Error> where S: Serializer {
-    self.0.serialize(s)
-  }*/
 }
 
 impl PieceState {
index d9117df93e4beb4131389896c96e0ea410247f19..717464c58e05f3d781a326632f9d0ba45267a0e7 100644 (file)
@@ -23,8 +23,7 @@ pub use thiserror::Error;
 pub use anyhow::{Context,anyhow};
 pub use fehler::{throws,throw};
 
-pub use serde::Deserialize;
-pub use serde::Serialize;
+pub use serde::{Serialize,Deserialize};
 pub use serde::{Serializer,Deserializer};
 
 pub use rocket_contrib::helmet::*;