Rename Square::from_index → from_index_unchecked
This commit is contained in:
parent
c290f00b9e
commit
ee51a13870
2 changed files with 14 additions and 8 deletions
|
@ -223,14 +223,15 @@ impl BitBoard {
|
||||||
/// board.
|
/// board.
|
||||||
#[must_use]
|
#[must_use]
|
||||||
pub fn occupied_squares(&self) -> impl Iterator<Item = Square> {
|
pub fn occupied_squares(&self) -> impl Iterator<Item = Square> {
|
||||||
LeadingBitScanner::new(self.0).map(|idx| unsafe { Square::from_index(idx as u8) })
|
LeadingBitScanner::new(self.0).map(|idx| unsafe { Square::from_index_unchecked(idx as u8) })
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Return an Iterator over the occupied squares. The Iterator yields
|
/// Return an Iterator over the occupied squares. The Iterator yields
|
||||||
/// squares starting from the trailing (least-significant bit) end of the
|
/// squares starting from the trailing (least-significant bit) end of the
|
||||||
/// board.
|
/// board.
|
||||||
pub fn occupied_squares_trailing(&self) -> impl Iterator<Item = Square> {
|
pub fn occupied_squares_trailing(&self) -> impl Iterator<Item = Square> {
|
||||||
TrailingBitScanner::new(self.0).map(|idx| unsafe { Square::from_index(idx as u8) })
|
TrailingBitScanner::new(self.0)
|
||||||
|
.map(|idx| unsafe { Square::from_index_unchecked(idx as u8) })
|
||||||
}
|
}
|
||||||
|
|
||||||
/// If the board is not empty, returns the first occupied square on the
|
/// If the board is not empty, returns the first occupied square on the
|
||||||
|
@ -240,7 +241,11 @@ impl BitBoard {
|
||||||
pub fn first_occupied_square(&self) -> Option<Square> {
|
pub fn first_occupied_square(&self) -> Option<Square> {
|
||||||
let leading_zeros = self.0.leading_zeros() as u8;
|
let leading_zeros = self.0.leading_zeros() as u8;
|
||||||
if leading_zeros < Square::NUM as u8 {
|
if leading_zeros < Square::NUM as u8 {
|
||||||
unsafe { Some(Square::from_index(Square::NUM as u8 - leading_zeros - 1)) }
|
unsafe {
|
||||||
|
Some(Square::from_index_unchecked(
|
||||||
|
Square::NUM as u8 - leading_zeros - 1,
|
||||||
|
))
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
None
|
None
|
||||||
}
|
}
|
||||||
|
@ -253,7 +258,7 @@ impl BitBoard {
|
||||||
pub fn first_occupied_square_trailing(&self) -> Option<Square> {
|
pub fn first_occupied_square_trailing(&self) -> Option<Square> {
|
||||||
let trailing_zeros = self.0.trailing_zeros() as u8;
|
let trailing_zeros = self.0.trailing_zeros() as u8;
|
||||||
if trailing_zeros < Square::NUM as u8 {
|
if trailing_zeros < Square::NUM as u8 {
|
||||||
unsafe { Some(Square::from_index(trailing_zeros)) }
|
unsafe { Some(Square::from_index_unchecked(trailing_zeros)) }
|
||||||
} else {
|
} else {
|
||||||
None
|
None
|
||||||
}
|
}
|
||||||
|
@ -318,7 +323,7 @@ impl TryFrom<BitBoard> for Square {
|
||||||
return Err(TryFromBitBoardError::NotSingleSquare);
|
return Err(TryFromBitBoardError::NotSingleSquare);
|
||||||
}
|
}
|
||||||
|
|
||||||
unsafe { Ok(Square::from_index(value.0.trailing_zeros() as u8)) }
|
unsafe { Ok(Square::from_index_unchecked(value.0.trailing_zeros() as u8)) }
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -220,9 +220,10 @@ coordinate_enum!(Square, [
|
||||||
impl Square {
|
impl Square {
|
||||||
/// # Safety
|
/// # Safety
|
||||||
///
|
///
|
||||||
/// This function does not do any bounds checking on the input.
|
/// This function does not do any bounds checking on the input. In debug
|
||||||
|
/// builds, this function will assert that the argument is in bounds.
|
||||||
#[must_use]
|
#[must_use]
|
||||||
pub unsafe fn from_index(x: u8) -> Square {
|
pub unsafe fn from_index_unchecked(x: u8) -> Square {
|
||||||
debug_assert!((x as usize) < Self::NUM);
|
debug_assert!((x as usize) < Self::NUM);
|
||||||
Self::try_from(x).unwrap_unchecked()
|
Self::try_from(x).unwrap_unchecked()
|
||||||
}
|
}
|
||||||
|
@ -232,7 +233,7 @@ impl Square {
|
||||||
pub fn from_file_rank(file: File, rank: Rank) -> Square {
|
pub fn from_file_rank(file: File, rank: Rank) -> Square {
|
||||||
let file_int: u8 = file.into();
|
let file_int: u8 = file.into();
|
||||||
let rank_int: u8 = rank.into();
|
let rank_int: u8 = rank.into();
|
||||||
unsafe { Self::from_index(rank_int << 3 | file_int) }
|
unsafe { Self::from_index_unchecked(rank_int << 3 | file_int) }
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn from_algebraic_str(s: &str) -> Result<Square, ParseSquareError> {
|
pub fn from_algebraic_str(s: &str) -> Result<Square, ParseSquareError> {
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue