Enum pgn_reader::Square
source · #[repr(u8)]pub enum Square {
Show 64 variants
A1 = 0,
B1 = 1,
C1 = 2,
D1 = 3,
E1 = 4,
F1 = 5,
G1 = 6,
H1 = 7,
A2 = 8,
B2 = 9,
C2 = 10,
D2 = 11,
E2 = 12,
F2 = 13,
G2 = 14,
H2 = 15,
A3 = 16,
B3 = 17,
C3 = 18,
D3 = 19,
E3 = 20,
F3 = 21,
G3 = 22,
H3 = 23,
A4 = 24,
B4 = 25,
C4 = 26,
D4 = 27,
E4 = 28,
F4 = 29,
G4 = 30,
H4 = 31,
A5 = 32,
B5 = 33,
C5 = 34,
D5 = 35,
E5 = 36,
F5 = 37,
G5 = 38,
H5 = 39,
A6 = 40,
B6 = 41,
C6 = 42,
D6 = 43,
E6 = 44,
F6 = 45,
G6 = 46,
H6 = 47,
A7 = 48,
B7 = 49,
C7 = 50,
D7 = 51,
E7 = 52,
F7 = 53,
G7 = 54,
H7 = 55,
A8 = 56,
B8 = 57,
C8 = 58,
D8 = 59,
E8 = 60,
F8 = 61,
G8 = 62,
H8 = 63,
}
Expand description
A square of the chessboard.
Variants§
A1 = 0
B1 = 1
C1 = 2
D1 = 3
E1 = 4
F1 = 5
G1 = 6
H1 = 7
A2 = 8
B2 = 9
C2 = 10
D2 = 11
E2 = 12
F2 = 13
G2 = 14
H2 = 15
A3 = 16
B3 = 17
C3 = 18
D3 = 19
E3 = 20
F3 = 21
G3 = 22
H3 = 23
A4 = 24
B4 = 25
C4 = 26
D4 = 27
E4 = 28
F4 = 29
G4 = 30
H4 = 31
A5 = 32
B5 = 33
C5 = 34
D5 = 35
E5 = 36
F5 = 37
G5 = 38
H5 = 39
A6 = 40
B6 = 41
C6 = 42
D6 = 43
E6 = 44
F6 = 45
G6 = 46
H6 = 47
A7 = 48
B7 = 49
C7 = 50
D7 = 51
E7 = 52
F7 = 53
G7 = 54
H7 = 55
A8 = 56
B8 = 57
C8 = 58
D8 = 59
E8 = 60
F8 = 61
G8 = 62
H8 = 63
Implementations§
source§impl Square
impl Square
sourcepub const unsafe fn new_unchecked(index: u32) -> Square
pub const unsafe fn new_unchecked(index: u32) -> Square
Gets a Square
from an integer index.
§Safety
It is the callers responsibility to ensure it is in the range 0..=63
.
sourcepub fn from_coords(file: File, rank: Rank) -> Square
pub fn from_coords(file: File, rank: Rank) -> Square
Tries to get a square from file and rank.
§Examples
use shakmaty::{Square, File, Rank};
assert_eq!(Square::from_coords(File::A, Rank::First), Square::A1);
sourcepub fn from_ascii(s: &[u8]) -> Result<Square, ParseSquareError>
pub fn from_ascii(s: &[u8]) -> Result<Square, ParseSquareError>
Parses a square name.
§Errors
Returns ParseSquareError
if the input is not a valid square name
in lowercase ASCII characters.
§Example
use shakmaty::Square;
let sq = Square::from_ascii(b"a5")?;
assert_eq!(sq, Square::A5);
sourcepub fn file(self) -> File
pub fn file(self) -> File
Gets the file.
§Examples
use shakmaty::{Square, File};
assert_eq!(Square::A1.file(), File::A);
assert_eq!(Square::B2.file(), File::B);
sourcepub fn rank(self) -> Rank
pub fn rank(self) -> Rank
Gets the rank.
§Examples
use shakmaty::{Square, Rank};
assert_eq!(Square::A1.rank(), Rank::First);
assert_eq!(Square::B2.rank(), Rank::Second);
sourcepub fn coords(self) -> (File, Rank)
pub fn coords(self) -> (File, Rank)
Gets file and rank.
§Examples
use shakmaty::{Square, File, Rank};
assert_eq!(Square::A1.coords(), (File::A, Rank::First));
assert_eq!(Square::H8.coords(), (File::H, Rank::Eighth));
sourcepub fn offset(self, delta: i32) -> Option<Square>
pub fn offset(self, delta: i32) -> Option<Square>
Calculates the offset from a square index.
§Examples
use shakmaty::Square;
assert_eq!(Square::F3.offset(8), Some(Square::F4));
assert_eq!(Square::F3.offset(-1), Some(Square::E3));
assert_eq!(Square::F3.offset(48), None);
sourcepub unsafe fn offset_unchecked(self, delta: i32) -> Square
pub unsafe fn offset_unchecked(self, delta: i32) -> Square
Calculates the offset from a square index without checking for overflow.
§Safety
It is the callers responsibility to ensure that delta
is a valid
offset for self
.
sourcepub fn xor(self, other: Square) -> Square
pub fn xor(self, other: Square) -> Square
Return the bitwise XOR of the numeric square representations. For some operands this is a useful geometric transformation.
sourcepub fn flip_horizontal(self) -> Square
pub fn flip_horizontal(self) -> Square
Flip the square horizontally.
use shakmaty::Square;
assert_eq!(Square::H1.flip_horizontal(), Square::A1);
assert_eq!(Square::D3.flip_horizontal(), Square::E3);
sourcepub fn flip_vertical(self) -> Square
pub fn flip_vertical(self) -> Square
Flip the square vertically.
use shakmaty::Square;
assert_eq!(Square::A8.flip_vertical(), Square::A1);
assert_eq!(Square::D3.flip_vertical(), Square::D6);
sourcepub fn flip_diagonal(self) -> Square
pub fn flip_diagonal(self) -> Square
Flip at the a1-h8 diagonal by swapping file and rank.
use shakmaty::Square;
assert_eq!(Square::A1.flip_diagonal(), Square::A1);
assert_eq!(Square::A3.flip_diagonal(), Square::C1);
sourcepub fn flip_anti_diagonal(self) -> Square
pub fn flip_anti_diagonal(self) -> Square
Flip at the h1-a8 diagonal.
use shakmaty::Square;
assert_eq!(Square::A1.flip_anti_diagonal(), Square::H8);
assert_eq!(Square::A3.flip_anti_diagonal(), Square::F8);
sourcepub fn rotate_90(self) -> Square
pub fn rotate_90(self) -> Square
Rotate 90 degrees clockwise.
use shakmaty::Square;
assert_eq!(Square::A1.rotate_90(), Square::A8);
assert_eq!(Square::A3.rotate_90(), Square::C8);
sourcepub fn rotate_180(self) -> Square
pub fn rotate_180(self) -> Square
Rotate 180 degrees.
use shakmaty::Square;
assert_eq!(Square::A1.rotate_180(), Square::H8);
assert_eq!(Square::A3.rotate_180(), Square::H6);
sourcepub fn rotate_270(self) -> Square
pub fn rotate_270(self) -> Square
Rotate 270 degrees clockwise.
use shakmaty::Square;
assert_eq!(Square::A1.rotate_270(), Square::H1);
assert_eq!(Square::A3.rotate_270(), Square::F1);
sourcepub fn is_light(self) -> bool
pub fn is_light(self) -> bool
Tests is the square is a light square.
use shakmaty::Square;
assert!(Square::D1.is_light());
assert!(!Square::D8.is_light());
Trait Implementations§
source§impl Ord for Square
impl Ord for Square
source§impl PartialEq for Square
impl PartialEq for Square
source§impl PartialOrd for Square
impl PartialOrd for Square
1.0.0 · source§fn le(&self, other: &Rhs) -> bool
fn le(&self, other: &Rhs) -> bool
self
and other
) and is used by the <=
operator. Read more