Fix rustfmt and nixfmt

This commit is contained in:
Greg Hellings
2024-10-16 16:23:13 -05:00
parent f85187e6c3
commit 0c1b09404b
7 changed files with 60 additions and 60 deletions
+27 -25
View File
@@ -1,7 +1,7 @@
use crate::cell::{Cell, CellValue};
use ndarray::{prelude::*, ViewRepr};
use std::collections::HashSet;
use std::fmt;
use ndarray::{prelude::*, ViewRepr};
const REGION_SIZE: usize = 9;
const SUB_REGION_SIZE: usize = 3;
@@ -30,9 +30,7 @@ impl fmt::Display for Board {
impl Board {
pub fn new() -> Board {
let cells = Array2::zeros((REGION_SIZE, REGION_SIZE));
let board = Board {
cells,
};
let board = Board { cells };
board
}
@@ -44,7 +42,7 @@ impl Board {
self.cells[point.coordinates()].set_value(value);
self.update_related(point, value);
}
pub fn update_related(&mut self, point: &Point, value: CellValue) {
self.update_column(point, value);
self.update_row(point, value);
@@ -82,8 +80,11 @@ impl Board {
pub fn col_range(&self) -> std::ops::Range<usize> {
0..REGION_SIZE
}
pub fn square_iter(&self, point: &Point) -> ndarray::ArrayBase<ViewRepr<&Cell>, Dim<[usize; 2]>> {
pub fn square_iter(
&self,
point: &Point,
) -> ndarray::ArrayBase<ViewRepr<&Cell>, Dim<[usize; 2]>> {
let row_bounds = point.row_bounds();
let col_bounds = point.col_bounds();
self.cells.slice(s![row_bounds, col_bounds])
@@ -92,7 +93,7 @@ impl Board {
pub fn row_iter(&self, row: usize) -> ndarray::ArrayBase<ViewRepr<&Cell>, Dim<[usize; 1]>> {
self.cells.slice(s![row, ..])
}
pub fn col_iter(&self, col: usize) -> ndarray::ArrayBase<ViewRepr<&Cell>, Dim<[usize; 1]>> {
self.cells.slice(s![.., col])
}
@@ -101,30 +102,31 @@ impl Board {
#[derive(PartialEq, Debug)]
pub struct Point {
row: usize,
col: usize
col: usize,
}
impl Point {
pub fn new(row: usize, col: usize) -> Point {
Point {
row, col
}
Point { row, col }
}
fn coordinates(&self) -> [usize; 2] {
[self.row, self.col]
}
fn _bounds(val: usize) -> std::ops::Range<usize> {
let mut start = val / (SUB_REGION_SIZE as usize);
start *= SUB_REGION_SIZE;
std::ops::Range {start, end: start + SUB_REGION_SIZE}
std::ops::Range {
start,
end: start + SUB_REGION_SIZE,
}
}
fn row_bounds(&self) -> std::ops::Range<usize> {
Self::_bounds(self.row)
}
fn col_bounds(&self) -> std::ops::Range<usize> {
Self::_bounds(self.col)
}
@@ -138,13 +140,13 @@ mod test {
#[test]
fn bounds_are_correct() {
let origin = Point{ row: 0, col: 0};
let origin = Point { row: 0, col: 0 };
assert_eq!(origin.row_bounds(), 0..3);
assert_eq!(origin.col_bounds(), 0..3);
let one = Point{ row: 1, col: 1};
let one = Point { row: 1, col: 1 };
assert_eq!(one.row_bounds(), 0..3);
assert_eq!(one.col_bounds(), 0..3);
let five = Point{ row: 5, col: 7};
let five = Point { row: 5, col: 7 };
assert_eq!(five.row_bounds(), 3..6);
assert_eq!(five.col_bounds(), 6..9);
}
@@ -152,24 +154,24 @@ mod test {
#[test]
fn has_none_values() {
let board = Board::new();
assert!(board.value(&Point{row: 0, col: 0}).is_none());
assert!(board.value(&Point { row: 0, col: 0 }).is_none());
}
#[test]
fn set_value_updates_cell() {
let mut board = Board::new();
board.set_value(&Point{row: 0, col: 0}, CellValue::One);
let val = board.value(&Point{row: 0, col: 0}).unwrap();
board.set_value(&Point { row: 0, col: 0 }, CellValue::One);
let val = board.value(&Point { row: 0, col: 0 }).unwrap();
assert_eq!(val, CellValue::One);
// Same column
assert_not_contains!(board.candidates(&Point{row: 1, col: 0}), &CellValue::One);
assert_not_contains!(board.candidates(&Point { row: 1, col: 0 }), &CellValue::One);
// Same row
assert_not_contains!(board.candidates(&Point{row: 0, col: 1}), &CellValue::One);
assert_not_contains!(board.candidates(&Point { row: 0, col: 1 }), &CellValue::One);
// Same sub-structure
assert_not_contains!(board.candidates(&Point{row: 1, col: 1}), &CellValue::One);
assert_not_contains!(board.candidates(&Point { row: 1, col: 1 }), &CellValue::One);
// Different row
assert_contains!(board.candidates(&Point{row: 8, col: 8}), &CellValue::One);
assert_contains!(board.candidates(&Point { row: 8, col: 8 }), &CellValue::One);
}
}
+3 -3
View File
@@ -1,5 +1,5 @@
use std::collections::HashSet;
use num_traits::identities::Zero;
use std::collections::HashSet;
use std::ops::Add;
use std::string::ToString;
@@ -27,7 +27,7 @@ impl ToString for CellValue {
CellValue::Six => String::from("6"),
CellValue::Seven => String::from("7"),
CellValue::Eight => String::from("8"),
CellValue::Nine => String::from("9")
CellValue::Nine => String::from("9"),
}
}
}
@@ -84,7 +84,7 @@ impl Zero for Cell {
candidates,
}
}
fn is_zero(&self) -> bool {
self.value.is_none()
}
+14 -12
View File
@@ -1,6 +1,10 @@
use iced::{border::Radius, widget::{button, text}, Background, Border, Color, Shadow, Theme};
use super::super::cell::Cell;
use super::Message;
use iced::{
border::Radius,
widget::{button, text},
Background, Border, Color, Shadow, Theme,
};
const LIGHT_GRAY: Color = Color {
r: 0.5,
@@ -19,22 +23,20 @@ pub fn widget(cell: &Cell) -> iced::Element<Message> {
.style(|theme: &Theme, status| {
// Get the current theme's palette
let palette = theme.palette();
// Create a default border, since we need to set off the cells
// TODO: Figure out how to get this out of the theme?
let mut border = Border::default().color(LIGHT_GRAY);
border.width = 1.0;
// Return a style based on the status
match status {
button::Status::Active => {
button::Style{
background: Some(Background::from(palette.background)),
text_color: palette.text,
border,
shadow: Shadow::default(),
}
}
button::Status::Active => button::Style {
background: Some(Background::from(palette.background)),
text_color: palette.text,
border,
shadow: Shadow::default(),
},
_ => {
let mut style = button::primary(theme, status);
style.border.radius = Radius::new(0);
@@ -46,4 +48,4 @@ pub fn widget(cell: &Cell) -> iced::Element<Message> {
.width(50)
.on_press(Message::Pressed)
.into()
}
}
+1 -1
View File
@@ -3,4 +3,4 @@ pub enum Message {
Pressed,
}
pub mod cell;
pub mod cell;
+2 -2
View File
@@ -1,8 +1,8 @@
mod cell;
mod board;
mod cell;
pub mod display;
pub use board::Board;
pub use board::Point;
pub use cell::Cell;
pub use cell::CellValue;
pub use cell::CellValue;
+12 -16
View File
@@ -1,9 +1,8 @@
use rustdoku::Board;
use rustdoku::display;
use rustdoku::Board;
use iced;
struct State {
board: Board,
message: String,
@@ -25,22 +24,19 @@ fn update(state: &mut State, _message: display::Message) {
fn display(state: &State) -> iced::Element<display::Message> {
let mut column: Vec<iced::Element<display::Message>> = Vec::with_capacity(9);
for row_idx in state.board.row_range() {
let row: Vec<iced::Element<display::Message>> = state.board
.row_iter(row_idx)
.into_iter()
.map(|c| display::cell::widget(c))
.into_iter()
.collect();
column.push(
iced::widget::Row::with_children(row)
.into()
);
let row: Vec<iced::Element<display::Message>> = state
.board
.row_iter(row_idx)
.into_iter()
.map(|c| display::cell::widget(c))
.into_iter()
.collect();
column.push(iced::widget::Row::with_children(row).into());
}
iced::widget::Column::with_children(column)
.into()
iced::widget::Column::with_children(column).into()
}
fn main() -> iced::Result {
iced::run("SuDoKu", update, display)
}
}