// ---------- game state ----------
-#[derive(Debug,Serialize)]
+#[derive(Debug,Serialize,Deserialize)]
pub struct GameState {
pub pieces : DenseSlotMap<PieceId,PieceState>,
pub players : DenseSlotMap<PlayerId,PlayerState>,
pub log : Vec<(Generation,LogEntryRef)>,
}
-#[derive(Debug,Serialize)]
+#[derive(Debug,Serialize,Deserialize)]
pub struct PieceState {
pub pos : Pos,
#[serde(with="self::piece_serde")]
pub gen_before_lastclient : Generation,
}
-#[derive(Debug,Serialize)]
+#[derive(Debug,Serialize,Deserialize)]
pub struct PlayerState {
pub nick : String,
}
#[derive(Debug,Clone)]
pub struct LogEntryRef(pub Arc<LogEntry>);
-#[derive(Debug,Serialize)]
+#[derive(Debug,Serialize,Deserialize)]
pub struct LogEntry {
pub html : String,
}
}
}
+impl<'d> Deserialize<'d> for LogEntryRef {
+ fn deserialize<D>(d: D) -> Result<Self, D::Error> where D: Deserializer<'d> {
+ todo!()
+ }
+ /*
+ 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 {
#[throws(SE)]
pub fn make_defs(&self, pri : &PieceRenderInstructions) -> String {
pub fn serialize<S:Serializer>(pc : &Box<dyn Piece>, s:S) -> S::Ok {
s.serialize_none()?
}
- pub fn deserialize() { }
+ #[throws(D::Error)]
+ pub fn deserialize<'d,D:Deserializer<'d>>(d:D) -> Box<dyn Piece> {
+ panic!();
+ }
}
// ========== ad-hoc and temporary ==========
pub use serde::Deserialize;
pub use serde::Serialize;
-pub use serde::Serializer;
+pub use serde::{Serializer,Deserializer};
pub use rocket_contrib::helmet::*;
pub use rocket_contrib::templates::Template;