use std::marker::PhantomData; use std::time::Instant; use model::Move; use crate::Evaluation; #[derive(Debug, Clone, Copy)] pub struct EvalInfo { pub start_time: Instant, pub nodes_searched: usize, pub evaluation: Evaluation, pub current_best_move: Option, pub current_depth: u8, pub(crate) _unused: PhantomData<()>, } impl EvalInfo { pub fn nodes_per_second(&self) -> usize { let elapsed = self.start_time.elapsed().as_secs_f64(); (self.nodes_searched as f64 / elapsed) as usize } pub fn elapsed_milliseconds(self) -> u32 { self.start_time.elapsed().as_millis() as u32 } }