zero_trust_rps/common/rps/
simple_move.rs1use 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}