pub struct EnginePlayStats {Show 15 fields
pub report_id: String,
pub engine: String,
pub client_version: String,
pub platform: String,
pub format: Option<String>,
pub seats: u32,
pub multiplayer: bool,
pub duration_s: u32,
pub end_reason: String,
pub turnaround: EngineTurnaround,
pub engine_think: Option<EngineTurnaround>,
pub engine_think_same_turn: Option<EngineTurnaround>,
pub engine_think_cross_turn: Option<EngineTurnaround>,
pub think_samples_hidden: u32,
pub by_type: Vec<EngineTypeTurnaround>,
}Fields§
§report_id: StringGenerated by the client, so a retry cannot double-count the game.
engine: StringWhich engine actually ran, which is not always the one the room asked for: a browser with the Forge engine on hosts a “Manabrew” room on it.
client_version: String§platform: String§format: Option<String>§seats: u32§multiplayer: bool§duration_s: u32§end_reason: String§turnaround: EngineTurnaroundClient-side turnaround: answer sent to next prompt landing. This is the interval the player feels, and the one comparable across engines.
engine_think: Option<EngineTurnaround>The engine’s own think time, when it reports one.
engine_think_same_turn: Option<EngineTurnaround>engine_think split by whether an opponent turn happened inside the
window. A window is answer-received to next-prompt-ready, so in a game
against the AI the cross-turn half carries whole opponent turns and is
not a measure of one decision.
engine_think_cross_turn: Option<EngineTurnaround>Windows dropped because the tab was backgrounded for part of them: the engine times itself in wall clock, which keeps running while the worker is descheduled.
by_type: Vec<EngineTypeTurnaround>Implementations§
Source§impl EnginePlayStats
impl EnginePlayStats
Sourcepub fn is_plausible(&self) -> bool
pub fn is_plausible(&self) -> bool
Whether this is worth storing. Rejects the shapes a mistake or a hostile client produces: an unparseable id, empty or oversized text, a table with impossible seats, a report of no decisions at all.
Trait Implementations§
Source§impl Clone for EnginePlayStats
impl Clone for EnginePlayStats
Source§fn clone(&self) -> EnginePlayStats
fn clone(&self) -> EnginePlayStats
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreSource§impl Debug for EnginePlayStats
impl Debug for EnginePlayStats
Source§impl<'de> Deserialize<'de> for EnginePlayStats
impl<'de> Deserialize<'de> for EnginePlayStats
Source§fn deserialize<__D>(
__deserializer: __D,
) -> Result<EnginePlayStats, <__D as Deserializer<'de>>::Error>where
__D: Deserializer<'de>,
fn deserialize<__D>(
__deserializer: __D,
) -> Result<EnginePlayStats, <__D as Deserializer<'de>>::Error>where
__D: Deserializer<'de>,
impl Eq for EnginePlayStats
Source§impl PartialEq for EnginePlayStats
impl PartialEq for EnginePlayStats
Source§impl Serialize for EnginePlayStats
impl Serialize for EnginePlayStats
Source§fn serialize<__S>(
&self,
__serializer: __S,
) -> Result<<__S as Serializer>::Ok, <__S as Serializer>::Error>where
__S: Serializer,
fn serialize<__S>(
&self,
__serializer: __S,
) -> Result<<__S as Serializer>::Ok, <__S as Serializer>::Error>where
__S: Serializer,
impl StructuralPartialEq for EnginePlayStats
Source§impl TS for EnginePlayStats
impl TS for EnginePlayStats
Source§type WithoutGenerics = EnginePlayStats
type WithoutGenerics = EnginePlayStats
WithoutGenerics should just be Self.
If the type does have generic parameters, then all generic parameters must be replaced with
a dummy type, e.g ts_rs::Dummy or ().
The only requirement for these dummy types is that EXPORT_TO must be None. Read moreSource§fn decl_concrete() -> String
fn decl_concrete() -> String
TS::decl().
If this type is not generic, then this function is equivalent to TS::decl().Source§fn decl() -> String
fn decl() -> String
type User = { user_id: number, ... }.
This function will panic if the type has no declaration. Read moreSource§fn inline() -> String
fn inline() -> String
{ user_id: number }.
This function will panic if the type cannot be inlined.Source§fn inline_flattened() -> String
fn inline_flattened() -> String
This function will panic if the type cannot be flattened.
Source§fn visit_generics(v: &mut impl TypeVisitor)where
EnginePlayStats: 'static,
fn visit_generics(v: &mut impl TypeVisitor)where
EnginePlayStats: 'static,
Source§fn output_path() -> Option<&'static Path>
fn output_path() -> Option<&'static Path>
T should be exported.The returned path does not include the base directory from
TS_RS_EXPORT_DIR. Read moreSource§fn visit_dependencies(v: &mut impl TypeVisitor)where
EnginePlayStats: 'static,
fn visit_dependencies(v: &mut impl TypeVisitor)where
EnginePlayStats: 'static,
Source§const DOCS: Option<&'static str> = None
const DOCS: Option<&'static str> = None
TS is derived, docs are
automatically read from your doc comments or #[doc = ".."] attributesSource§fn dependencies() -> Vec<Dependency>where
Self: 'static,
fn dependencies() -> Vec<Dependency>where
Self: 'static,
Source§fn export() -> Result<(), ExportError>where
Self: 'static,
fn export() -> Result<(), ExportError>where
Self: 'static,
TS::export_all. Read moreSource§fn export_all() -> Result<(), ExportError>where
Self: 'static,
fn export_all() -> Result<(), ExportError>where
Self: 'static,
To export only this type, without its dependencies, use
TS::export. Read moreSource§fn export_all_to(out_dir: impl AsRef<Path>) -> Result<(), ExportError>where
Self: 'static,
fn export_all_to(out_dir: impl AsRef<Path>) -> Result<(), ExportError>where
Self: 'static,
To export only this type, without its dependencies, use
TS::export. Read moreSource§fn export_to_string() -> Result<String, ExportError>where
Self: 'static,
fn export_to_string() -> Result<String, ExportError>where
Self: 'static,
Auto Trait Implementations§
impl Freeze for EnginePlayStats
impl RefUnwindSafe for EnginePlayStats
impl Send for EnginePlayStats
impl Sync for EnginePlayStats
impl Unpin for EnginePlayStats
impl UnsafeUnpin for EnginePlayStats
impl UnwindSafe for EnginePlayStats
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> DeserializeOwned for Twhere
T: for<'de> Deserialize<'de>,
Source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
Source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
Source§fn equivalent(&self, key: &K) -> bool
fn equivalent(&self, key: &K) -> bool
key and return true if they are equal.