use serde::Serialize;
#[derive(Debug, Clone, PartialEq, Serialize)]
pub struct Position {
pub x: i32,
pub y: i32,
}
impl Position {
pub fn move_to_dir(&mut self, dir: Direction) {
match dir {
Direction::Up => self.y -= 1,
Direction::Down => self.y += 1,
Direction::Left => self.x -= 1,
Direction::Right => self.x += 1,
}
}
}
#[derive(Debug, Copy, Clone, PartialEq, Serialize)]
#[serde(rename_all = "lowercase")]
pub enum Direction {
Up,
Right,
Down,
Left,
}
impl Direction {
pub fn opposite(&self) -> Direction {
match *self {
Direction::Up => Direction::Down,
Direction::Right => Direction::Left,
Direction::Down => Direction::Up,
Direction::Left => Direction::Right,
}
}
}