use crate::{gaussian::Gaussian, player::Player, N_INF}; #[derive(Debug)] pub(crate) struct Agent { pub(crate) player: Player, pub(crate) message: Gaussian, pub(crate) last_time: i64, } impl Agent { pub(crate) fn receive(&self, elapsed: i64) -> Gaussian { if self.message != N_INF { self.message.forget(self.player.gamma, elapsed) } else { self.player.prior } } } impl Default for Agent { fn default() -> Self { Self { player: Player::default(), message: N_INF, last_time: i64::MIN, } } } pub(crate) fn clean<'a, A: Iterator>(agents: A, last_time: bool) { for a in agents { a.message = N_INF; if last_time { a.last_time = i64::MIN; } } }