44 lines
839 B
Rust
44 lines
839 B
Rust
#[repr(u8)]
|
|
pub enum Play {
|
|
Rock,
|
|
Paper,
|
|
Scissors,
|
|
}
|
|
|
|
impl Into<char> for Play {
|
|
fn into(self) -> char {
|
|
match self {
|
|
Play::Rock => 'X',
|
|
Play::Paper => 'Y',
|
|
Play::Scissors => 'Z',
|
|
}
|
|
}
|
|
}
|
|
|
|
impl Into<i32> for Play {
|
|
fn into(self) -> i32 {
|
|
match self {
|
|
Play::Rock => 1,
|
|
Play::Paper => 2,
|
|
Play::Scissors => 3,
|
|
}
|
|
}
|
|
}
|
|
|
|
pub fn translate(letter: char) -> Option<Play> {
|
|
match letter {
|
|
'A' => Some(Play::Rock),
|
|
'B' => Some(Play::Paper),
|
|
'C' => Some(Play::Scissors),
|
|
_ => None,
|
|
}
|
|
}
|
|
|
|
pub fn winning(play: Play) -> char {
|
|
match play {
|
|
Play::Rock => Play::Paper.into(),
|
|
Play::Paper => Play::Scissors.into(),
|
|
Play::Scissors => Play::Rock.into(),
|
|
}
|
|
}
|