Skip to content

Commit 987f7d4

Browse files
committed
chore: only the covering problem remains :slight_smile:
1 parent 270309d commit 987f7d4

File tree

3 files changed

+22
-13
lines changed

3 files changed

+22
-13
lines changed

games/src/games/chess/mod.rs

+10-9
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
use std::usize;
12
use std::{ops, sync::LazyLock};
23

34
use crate::interface::{RepresentableType, SetType};
@@ -30,7 +31,7 @@ crate::interface::game_details!(
3031

3132
impl BitBoard {
3233
pub fn new(raw: u64) -> BitBoard {
33-
BitBoard(raw)
34+
BitBoard::from(raw)
3435
}
3536

3637
pub fn shift(&self, dir: Direction) -> BitBoard {
@@ -59,16 +60,16 @@ impl BitBoard {
5960
}
6061

6162
pub fn between(sq_1: Square, sq_2: Square) -> BitBoard {
62-
BETWEEN[sq_1 as usize][sq_2 as usize]
63+
BETWEEN[u8::from(sq_1) as usize][sq_2.into()]
6364
}
6465

6566
pub fn between2(sq_1: Square, sq_2: Square) -> BitBoard {
66-
BETWEEN[sq_1 as usize][sq_2 as usize] | sq_2
67+
BETWEEN[u8::from(sq_1) as usize][sq_2.into()] | sq_2
6768
}
6869
}
6970

7071
static DIAGONAL: LazyLock<[BitBoard; 15]> = LazyLock::new(|| {
71-
const MAIN_DIAGONAL: BitBoard = BitBoard(0x8040201008040201u64);
72+
const MAIN_DIAGONAL: BitBoard = BitBoard::from(0x8040201008040201u64);
7273

7374
let mut diagonals = [BitBoard::EMPTY; 15];
7475

@@ -90,7 +91,7 @@ static DIAGONAL: LazyLock<[BitBoard; 15]> = LazyLock::new(|| {
9091
});
9192

9293
static ANTI_DIAGONAL: LazyLock<[BitBoard; 15]> = LazyLock::new(|| {
93-
const MAIN_ANTI_DIAGONAL: BitBoard = BitBoard(0x0102040810204080u64);
94+
const MAIN_ANTI_DIAGONAL: BitBoard = BitBoard::from(0x0102040810204080u64);
9495

9596
let mut anti_diagonals = [BitBoard::EMPTY; 15];
9697

@@ -147,7 +148,7 @@ static BETWEEN: LazyLock<[[BitBoard; Square::N]; Square::N]> =
147148
// The intersection between the two blocked rays will be the between
148149
// BitBoard + Squares 1 and 2. Therefore, to get the between BitBoard, a
149150
// final intersection operator with the union of Squares 1 and 2 is do
150-
between[square_1 as usize][square_2 as usize] =
151+
between[square_1.into()][square_2.into()] =
151152
moves::hyperbola(square_1, blockers, mask)
152153
& moves::hyperbola(square_2, blockers, mask);
153154
}
@@ -172,15 +173,15 @@ impl Square {
172173
}
173174

174175
pub fn shift(self, dir: Direction) -> Square {
175-
unsafe { Square::unsafe_from((self as i8 + dir as i8) as u8) }
176+
unsafe { Square::unsafe_from((u8::from(self) as i8 + dir as i8) as u8) }
176177
}
177178

178179
pub fn diagonal(self) -> usize {
179-
7 + self.rank() as usize - self.file() as usize
180+
7usize + u8::from(self.rank()) as usize - self.file().into()
180181
}
181182

182183
pub fn anti_diagonal(self) -> usize {
183-
self.rank() as usize + self.file() as usize
184+
self.rank().into() + self.file().into()
184185
}
185186
}
186187

games/src/games/chess/move.rs

+4-4
Original file line numberDiff line numberDiff line change
@@ -63,8 +63,8 @@ impl Move {
6363
pub fn new(source: Square, target: Square, mvflag: MoveFlag) -> Move {
6464
Move(
6565
(mvflag as u16) << Move::MVFLAG_OFFSET
66-
| (source as u16) << Move::SOURCE_OFFSET
67-
| (target as u16) << Move::TARGET_OFFSET,
66+
| (u8::from(source) as u16) << Move::SOURCE_OFFSET
67+
| (target.into() as u16) << Move::TARGET_OFFSET,
6868
)
6969
}
7070

@@ -90,8 +90,8 @@ impl Move {
9090
) -> Move {
9191
Move(
9292
(promotion as u16) << Move::MVFLAG_OFFSET
93-
| (source as u16) << Move::SOURCE_OFFSET
94-
| (target as u16) << Move::TARGET_OFFSET,
93+
| (u8::from(source) as u16) << Move::SOURCE_OFFSET
94+
| (target.into()) << Move::TARGET_OFFSET,
9595
)
9696
}
9797

games/src/interface/bitboard.rs

+8
Original file line numberDiff line numberDiff line change
@@ -203,6 +203,14 @@ impl<B: PrimInt, const F: u8, const R: u8> From<CartesianSquareSet<B, F, R>>
203203
}
204204
}
205205

206+
impl<B: PrimInt, const F: u8, const R: u8> From<u64>
207+
for CartesianSquareSet<B, F, R>
208+
{
209+
fn from(value: u64) -> Self {
210+
Self(value, PhantomData)
211+
}
212+
}
213+
206214
// a -> {a}
207215
impl<B: PrimInt, const F: u8, const R: u8> From<CartesianSquare<B, F, R>>
208216
for CartesianSquareSet<B, F, R>

0 commit comments

Comments
 (0)