44 lines
942 B
Rust
44 lines
942 B
Rust
pub mod grid;
|
|
pub mod enums;
|
|
|
|
pub use grid::*;
|
|
pub use enums::*;
|
|
|
|
#[derive(Debug, Default, Copy, Clone, Eq, Hash, PartialEq)]
|
|
pub struct Location {
|
|
pub x: isize,
|
|
pub y: isize,
|
|
}
|
|
|
|
impl Location {
|
|
pub fn new(x: isize, y: isize) -> Self {
|
|
Location { x, y }
|
|
}
|
|
|
|
pub fn get_distance(self, other: Self) -> f64 {
|
|
let squares = (other.x - self.x).pow(2) + (other.y - self.y).pow(2);
|
|
|
|
(squares as f64).sqrt()
|
|
}
|
|
}
|
|
|
|
#[macro_export]
|
|
macro_rules! deref {
|
|
($($struct: ty, $target: ty),* ) => {
|
|
$(
|
|
impl ::core::ops::Deref for $struct {
|
|
type Target = $target;
|
|
|
|
fn deref(&self) -> &Self::Target {
|
|
&self.0
|
|
}
|
|
}
|
|
impl ::core::ops::DerefMut for $struct {
|
|
fn deref_mut(&mut self) -> &mut Self::Target {
|
|
&mut self.0
|
|
}
|
|
}
|
|
)*
|
|
}
|
|
}
|