diff --git a/bitboard/src/bitboard.rs b/bitboard/src/bitboard.rs index fa91c16..6bc3f38 100644 --- a/bitboard/src/bitboard.rs +++ b/bitboard/src/bitboard.rs @@ -22,18 +22,18 @@ impl BitBoard { BitBoard(0) } - pub fn new(bits: u64) -> BitBoard { + pub const fn new(bits: u64) -> BitBoard { BitBoard(bits) } - pub fn rank(rank: usize) -> BitBoard { - assert!(rank < 8); - RANKS[rank] + pub fn rank(rank: &u8) -> BitBoard { + debug_assert!(*rank < 8); + RANKS[*rank as usize] } - pub fn file(file: usize) -> BitBoard { - assert!(file < 8); - FILES[file] + pub fn file(file: &u8) -> BitBoard { + debug_assert!(*file < 8); + FILES[*file as usize] } pub fn ray(sq: Square, dir: Direction) -> BitBoard { @@ -56,6 +56,10 @@ impl BitBoard { } impl BitBoard { + pub fn as_bits(&self) -> &u64 { + &self.0 + } + pub fn is_empty(&self) -> bool { self.0 == 0 } @@ -255,21 +259,22 @@ mod tests { use chessfriend_core::Square; #[test] + #[ignore] fn display_and_debug() { - let bb = BitBoard::file(0) | BitBoard::file(3) | BitBoard::rank(7) | BitBoard::rank(4); + let bb = BitBoard::file(&0) | BitBoard::file(&3) | BitBoard::rank(&7) | BitBoard::rank(&4); println!("{}", &bb); } #[test] fn rank() { - assert_eq!(BitBoard::rank(0).0, 0xFF, "Rank 1"); - assert_eq!(BitBoard::rank(1).0, 0xFF00, "Rank 2"); - assert_eq!(BitBoard::rank(2).0, 0xFF0000, "Rank 3"); - assert_eq!(BitBoard::rank(3).0, 0xFF000000, "Rank 4"); - assert_eq!(BitBoard::rank(4).0, 0xFF00000000, "Rank 5"); - assert_eq!(BitBoard::rank(5).0, 0xFF0000000000, "Rank 6"); - assert_eq!(BitBoard::rank(6).0, 0xFF000000000000, "Rank 7"); - assert_eq!(BitBoard::rank(7).0, 0xFF00000000000000, "Rank 8"); + assert_eq!(BitBoard::rank(&0).0, 0xFF, "Rank 1"); + assert_eq!(BitBoard::rank(&1).0, 0xFF00, "Rank 2"); + assert_eq!(BitBoard::rank(&2).0, 0xFF0000, "Rank 3"); + assert_eq!(BitBoard::rank(&3).0, 0xFF000000, "Rank 4"); + assert_eq!(BitBoard::rank(&4).0, 0xFF00000000, "Rank 5"); + assert_eq!(BitBoard::rank(&5).0, 0xFF0000000000, "Rank 6"); + assert_eq!(BitBoard::rank(&6).0, 0xFF000000000000, "Rank 7"); + assert_eq!(BitBoard::rank(&7).0, 0xFF00000000000000, "Rank 8"); } #[test]