summaryrefslogtreecommitdiff
path: root/2024_rust/src/lib.rs
diff options
context:
space:
mode:
Diffstat (limited to '2024_rust/src/lib.rs')
-rw-r--r--2024_rust/src/lib.rs13
1 files changed, 13 insertions, 0 deletions
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<T> {
@@ -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<Pos> {
+ 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;