zero-trust-rps 0.0.5

Online Multiplayer Rock Paper Scissors
Documentation
use crate::common::message::UserState;

#[derive(Debug, PartialEq, Eq, Clone, Copy)]
pub enum RpsState {
    BeforeRoom,
    InRoom,
    Played,
    Confirmed,
}

impl From<UserState> for RpsState {
    fn from(value: UserState) -> Self {
        match value {
            UserState::InRoom => RpsState::InRoom,
            UserState::Played(_) => RpsState::Played,
            UserState::Confirmed(_) => RpsState::Confirmed,
        }
    }
}

pub trait UserMoveMethods {
    fn allowed_state(&self) -> RpsState;

    fn resulting_state(&self) -> RpsState;
}