zero_trust_rps/common/rps/
simple_move.rs

1use crate::common::message::{RoomId, RpsData};
2
3use super::{move_kind::UserMoveKind, state::UserMoveMethods};
4
5#[derive(Clone, Copy, Debug)]
6pub enum SimpleUserMove {
7    JoinRoom(RoomId),
8    Play(RpsData),
9    ConfirmPlay,
10    BackToRoom,
11}
12
13impl From<&SimpleUserMove> for UserMoveKind {
14    fn from(value: &SimpleUserMove) -> Self {
15        match value {
16            SimpleUserMove::JoinRoom(_) => UserMoveKind::JoinRoom,
17            SimpleUserMove::Play(_) => UserMoveKind::Play,
18            SimpleUserMove::ConfirmPlay => UserMoveKind::ConfirmPlay,
19            SimpleUserMove::BackToRoom => UserMoveKind::BackToRoom,
20        }
21    }
22}
23
24impl UserMoveMethods for SimpleUserMove {
25    fn allowed_state(&self) -> super::state::RpsState {
26        Into::<UserMoveKind>::into(self).allowed_state()
27    }
28
29    fn resulting_state(&self) -> super::state::RpsState {
30        Into::<UserMoveKind>::into(self).resulting_state()
31    }
32}