Board class

This commit is contained in:
Andrew Golovashevich 2026-01-22 03:17:43 +03:00
parent 6ff12cb56a
commit ab46566693
4 changed files with 55 additions and 2 deletions

View File

@ -2,5 +2,12 @@
name = "bgtu-ai-1"
edition = "2024"
[lints]
workspace = true
[dependencies]
egui = {registry = "crates-io", version = "0.33.3"}
eframe = { version = "0.33.3", default-features = false, features = ["default_fonts", "glow"] }
[profile.dev.package.eframe]
opt-level = 2
debug = true

42
lab1/src/algo/board.rs Normal file
View File

@ -0,0 +1,42 @@
use std::ops::{Index, IndexMut};
pub(crate) struct Board {
data: Box<[usize]>,
}
impl Board {
pub fn alloc(size: usize) -> Self {
return Self {
data: vec![0usize; size].into_boxed_slice(),
};
}
}
impl Index<usize> for Board {
type Output = usize;
fn index(&self, index: usize) -> &Self::Output {
return self
.data
.get(index)
.unwrap_or_else(|| panic!("Y out of bounds: {index} >= {}", self.data.len()));
}
}
impl IndexMut<usize> for Board {
fn index_mut(&mut self, index: usize) -> &mut Self::Output {
let len = self.data.len();
return self
.data
.get_mut(index)
.unwrap_or_else(|| panic!("Y out of bounds: {index} >= {len}"));
}
}
impl Clone for Board {
fn clone(&self) -> Self {
return Self {
data: self.data.clone(),
};
}
}

1
lab1/src/algo/mod.rs Normal file
View File

@ -0,0 +1 @@
mod board;

View File

@ -1,4 +1,7 @@
mod board;
#![cfg_attr(not(debug_assertions), windows_subsystem = "windows")] // hide console window on Windows in release
#![expect(rustdoc::missing_crate_level_docs)] // it's an example
mod algo;
fn main() {