Add 'NUM_VARIANTS' constant to all 'board' enums
This commit is contained in:
parent
2c140d0481
commit
337b8f61f4
|
@ -14,10 +14,13 @@ pub enum CastleRights {
|
|||
}
|
||||
|
||||
impl CastleRights {
|
||||
/// The number of [CastleRights] variants.
|
||||
pub const NUM_VARIANTS: usize = 4;
|
||||
|
||||
/// Convert from a castle rights index into a [CastleRights] type.
|
||||
#[inline(always)]
|
||||
pub fn from_index(index: usize) -> Self {
|
||||
assert!(index < 4);
|
||||
assert!(index < Self::NUM_VARIANTS);
|
||||
// SAFETY: we know the value is in-bounds
|
||||
unsafe { Self::from_index_unchecked(index) }
|
||||
}
|
||||
|
|
|
@ -8,10 +8,13 @@ pub enum Color {
|
|||
}
|
||||
|
||||
impl Color {
|
||||
/// The number of [Color] variants.
|
||||
pub const NUM_VARIANTS: usize = 2;
|
||||
|
||||
/// Convert from a piece index into a [Color] type.
|
||||
#[inline(always)]
|
||||
pub fn from_index(index: usize) -> Self {
|
||||
assert!(index < 2);
|
||||
assert!(index < Self::NUM_VARIANTS);
|
||||
// SAFETY: we know the value is in-bounds
|
||||
unsafe { Self::from_index_unchecked(index) }
|
||||
}
|
||||
|
|
|
@ -15,7 +15,10 @@ pub enum File {
|
|||
}
|
||||
|
||||
impl File {
|
||||
const ALL: [Self; 8] = [
|
||||
/// The number of [File] variants.
|
||||
pub const NUM_VARIANTS: usize = 8;
|
||||
|
||||
const ALL: [Self; Self::NUM_VARIANTS] = [
|
||||
Self::A,
|
||||
Self::B,
|
||||
Self::C,
|
||||
|
|
|
@ -15,7 +15,10 @@ pub enum Rank {
|
|||
}
|
||||
|
||||
impl Rank {
|
||||
const ALL: [Self; 8] = [
|
||||
/// The number of [Rank] variants.
|
||||
pub const NUM_VARIANTS: usize = 8;
|
||||
|
||||
const ALL: [Self; Self::NUM_VARIANTS] = [
|
||||
Self::First,
|
||||
Self::Second,
|
||||
Self::Third,
|
||||
|
|
|
@ -23,8 +23,11 @@ impl std::fmt::Display for Square {
|
|||
}
|
||||
|
||||
impl Square {
|
||||
/// The number of [Square] variants.
|
||||
pub const NUM_VARIANTS: usize = 64;
|
||||
|
||||
#[rustfmt::skip]
|
||||
const ALL: [Self; 64] = [
|
||||
const ALL: [Self; Self::NUM_VARIANTS] = [
|
||||
Self::A1, Self::A2, Self::A3, Self::A4, Self::A5, Self::A6, Self::A7, Self::A8,
|
||||
Self::B1, Self::B2, Self::B3, Self::B4, Self::B5, Self::B6, Self::B7, Self::B8,
|
||||
Self::C1, Self::C2, Self::C3, Self::C4, Self::C5, Self::C6, Self::C7, Self::C8,
|
||||
|
|
Loading…
Reference in a new issue