serde impl #16

Merged
Quaternions merged 25 commits from serde into master 2026-06-09 17:15:25 +00:00
Showing only changes of commit 9cc223c160 - Show all commits
+18 -6
View File
1
@@ -716,8 +716,18 @@ where
}
}
use serde::ser::SerializeStruct;
let mut map = serializer.serialize_struct("Session", 3)?;
#[derive(serde_derive::Serialize)]
#[serde(bound(serialize = "
G: serde::Serialize,
SessionConfig<G::Config>: serde::Serialize,
G::Instruction: serde::Serialize,
"))]
struct SerializedSession<'a, G: Game> {
config: &'a SessionConfig<G::Config>,
state: &'a G,
history: History<'a, G>,
}
// serialize the initial state of the game.
// if there is history, it is the first snapshot's state,
// otherwise it is the current game state since there are no moves.
1
@@ -726,9 +736,11 @@ where
} else {
&self.state.state
};
map.serialize_field("config", &self.config)?;
map.serialize_field("state", state)?;
map.serialize_field("history", &History(&self.state.history))?;
map.end()
let session = SerializedSession {
config: &self.config,
state,
history: History(&self.state.history),
};
session.serialize(serializer)
}
}