use crate::geometry::vec::*; use std::ops::*; #[derive(Debug, Default, Clone, Copy, Hash, PartialEq, Eq)] pub struct Point2d { pub x: i8, pub y: i8, } impl Point2d { pub fn new(x: i8, y: i8) -> Point2d { Point2d { x, y } } } impl Add for Point2d { type Output = Self; fn add(self, other: Vec2d) -> Self { Point2d { x: self.x.saturating_add(other.x), y: self.y.saturating_add(other.y), } } } impl Sub for Point2d { type Output = Vec2d; fn sub(self, other: Self) -> Vec2d { Vec2d { x: self.x.saturating_sub(other.x), y: self.y.saturating_sub(other.y), } } }