From a360df726d04bf49fc8a06fdcbf668f1fea98aff Mon Sep 17 00:00:00 2001 From: Guillermo Ramos Date: Tue, 10 Dec 2024 19:56:19 +0100 Subject: 2024.10 --- 2024_rust/src/lib.rs | 13 +++++++++++++ 1 file changed, 13 insertions(+) (limited to '2024_rust/src/lib.rs') diff --git a/2024_rust/src/lib.rs b/2024_rust/src/lib.rs index c034fea..ea6f7d6 100644 --- a/2024_rust/src/lib.rs +++ b/2024_rust/src/lib.rs @@ -1,5 +1,6 @@ pub mod matrix { pub type Pos = (usize, usize); + pub type PosDelta = (isize, isize); #[derive(Clone)] pub struct Matrix { @@ -27,6 +28,18 @@ pub mod matrix { pub fn set(&mut self, (x, y): Pos, dot: T) { self.dots[x][y] = dot; } + + pub fn pos_move(&self, (x, y): Pos, (dx, dy): PosDelta) -> Option { + let x2 = x as isize + dx; + if x2 < 0 || x2 >= self.limit.0 as isize { + return None; + } + let y2 = y as isize + dy; + if y2 < 0 || y2 >= self.limit.1 as isize { + return None; + } + Some((x2 as usize, y2 as usize)) + } } use std::fmt; -- cgit v1.2.3