#![allow(dead_code)]
use std::ops;
#[derive(Clone, Copy, Debug)]
pub struct Coord {
pub x: i32,
pub y: i32,
}
impl Coord {
pub fn to_vec(self: Coord) -> Vec<i32> {
vec![self.x, self.y]
}
pub fn to_tuple(self: Coord) -> (i32, i32) {
(self.x, self.y)
}
}
impl ops::Add<Coord> for Coord {
type Output = Coord;
fn add(self: Coord, rhs: Coord) -> Coord {
Coord {
x: self.x + rhs.x,
y: self.y + rhs.y,
}
}
}
impl ops::Sub<Coord> for Coord {
type Output = Coord;
fn sub(self: Coord, rhs: Coord) -> Coord {
Coord {
x: self.x - rhs.x,
y: self.y - rhs.y,
}
}
}
impl ops::Mul<Coord> for Coord {
type Output = Coord;
fn mul(self: Coord, rhs: Coord) -> Coord {
Coord {
x: self.x * rhs.x,
y: self.y * rhs.y,
}
}
}
impl ops::Div<Coord> for Coord {
type Output = Coord;
fn div(self: Coord, rhs: Coord) -> Coord {
Coord {
x: self.x / rhs.x,
y: self.y / rhs.y,
}
}
}