use crate::dynamic_data::models::learned_move::LearnedMove; use crate::dynamic_data::models::pokemon::Pokemon; #[derive(Debug)] pub enum TurnChoice<'a> { Move { user: &'a Pokemon<'a>, used_move: Box>, target_side: u8, target_index: u8, }, Item { user: &'a Pokemon<'a>, }, Switch { user: &'a Pokemon<'a>, }, Flee { user: &'a Pokemon<'a>, }, } impl<'a> TurnChoice<'a> { pub fn user(&self) -> &'a Pokemon<'a> { match self { TurnChoice::Move { user, .. } => user, TurnChoice::Item { user, .. } => user, TurnChoice::Switch { user, .. } => user, TurnChoice::Flee { user, .. } => user, } } }