zero_trust_rps/common/rps/
state.rs

1use crate::common::message::UserState;
2
3#[derive(Debug, PartialEq, Eq, Clone, Copy)]
4pub enum RpsState {
5    BeforeRoom,
6    InRoom,
7    Played,
8    Confirmed,
9}
10
11impl From<UserState> for RpsState {
12    fn from(value: UserState) -> Self {
13        match value {
14            UserState::InRoom => RpsState::InRoom,
15            UserState::Played(_) => RpsState::Played,
16            UserState::Confirmed(_) => RpsState::Confirmed,
17        }
18    }
19}
20
21pub trait UserMoveMethods {
22    fn allowed_state(&self) -> RpsState;
23
24    fn resulting_state(&self) -> RpsState;
25}