use serde::{Deserialize, Serialize}; #[derive(Serialize, Deserialize, PartialEq, Eq, Clone, Debug)] pub enum MoveResult { Current(Current), Next(Next), } impl MoveResult { pub fn current(self) -> Result { match self { MoveResult::Current(o) => Ok(o), MoveResult::Next(_) => Err(anyhow::anyhow!("Not in current state")), } } pub fn next(self) -> Result { match self { MoveResult::Next(f) => Ok(f), MoveResult::Current(_) => Err(anyhow::anyhow!("Not in next state")), } } }