Enum shakmaty::Square

source ·
#[repr(u8)]
pub enum Square {
Show 64 variants A1, B1, C1, D1, E1, F1, G1, H1, A2, B2, C2, D2, E2, F2, G2, H2, A3, B3, C3, D3, E3, F3, G3, H3, A4, B4, C4, D4, E4, F4, G4, H4, A5, B5, C5, D5, E5, F5, G5, H5, A6, B6, C6, D6, E6, F6, G6, H6, A7, B7, C7, D7, E7, F7, G7, H7, A8, B8, C8, D8, E8, F8, G8, H8,
}
Expand description

A square of the chessboard.

Variants§

§

A1

§

B1

§

C1

§

D1

§

E1

§

F1

§

G1

§

H1

§

A2

§

B2

§

C2

§

D2

§

E2

§

F2

§

G2

§

H2

§

A3

§

B3

§

C3

§

D3

§

E3

§

F3

§

G3

§

H3

§

A4

§

B4

§

C4

§

D4

§

E4

§

F4

§

G4

§

H4

§

A5

§

B5

§

C5

§

D5

§

E5

§

F5

§

G5

§

H5

§

A6

§

B6

§

C6

§

D6

§

E6

§

F6

§

G6

§

H6

§

A7

§

B7

§

C7

§

D7

§

E7

§

F7

§

G7

§

H7

§

A8

§

B8

§

C8

§

D8

§

E8

§

F8

§

G8

§

H8

Implementations§

source§

impl Square

source

pub const ALL: [Square; 64] = _

A1, B1, …, G8, H8.

source§

impl Square

source

pub const fn new(index: u32) -> Square

Gets a Square from an integer index.

Panics

Panics if the index is not in the range 0..=63.

Examples
use shakmaty::Square;

assert_eq!(Square::new(0), Square::A1);
assert_eq!(Square::new(63), Square::H8);
source

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.

source

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);
source

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);
source

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);
source

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);
source

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));
source

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);
source

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.

source

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.

source

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);
source

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);
source

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);
source

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);
source

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);
source

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);
source

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);
source

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());
source

pub fn is_dark(self) -> bool

Tests is the square is a dark square.

use shakmaty::Square;

assert!(Square::E1.is_dark());
assert!(!Square::E8.is_dark());
source

pub fn distance(self, other: Square) -> u32

The distance between the two squares, i.e. the number of king steps to get from one square to the other.

use shakmaty::Square;

assert_eq!(Square::A2.distance(Square::B5), 3);

Trait Implementations§

source§

impl Clone for Square

source§

fn clone(&self) -> Square

Returns a copy of the value. Read more
1.0.0 · source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
source§

impl Debug for Square

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl Display for Square

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl Extend<Square> for Bitboard

source§

fn extend<T: IntoIterator<Item = Square>>(&mut self, iter: T)

Extends a collection with the contents of an iterator. Read more
source§

fn extend_one(&mut self, item: A)

🔬This is a nightly-only experimental API. (extend_one)
Extends a collection with exactly one element.
source§

fn extend_reserve(&mut self, additional: usize)

🔬This is a nightly-only experimental API. (extend_one)
Reserves capacity in a collection for the given number of additional elements. Read more
source§

impl From<(File, Rank)> for Square

source§

fn from((file, rank): (File, Rank)) -> Square

Converts to this type from the input type.
source§

impl From<Square> for Bitboard

source§

fn from(sq: Square) -> Bitboard

Converts to this type from the input type.
source§

impl From<Square> for i16

source§

fn from(value: Square) -> i16

Converts to this type from the input type.
source§

impl From<Square> for i32

source§

fn from(value: Square) -> i32

Converts to this type from the input type.
source§

impl From<Square> for i64

source§

fn from(value: Square) -> i64

Converts to this type from the input type.
source§

impl From<Square> for i8

source§

fn from(value: Square) -> i8

Converts to this type from the input type.
source§

impl From<Square> for isize

source§

fn from(value: Square) -> isize

Converts to this type from the input type.
source§

impl From<Square> for u16

source§

fn from(value: Square) -> u16

Converts to this type from the input type.
source§

impl From<Square> for u32

source§

fn from(value: Square) -> u32

Converts to this type from the input type.
source§

impl From<Square> for u64

source§

fn from(value: Square) -> u64

Converts to this type from the input type.
source§

impl From<Square> for u8

source§

fn from(value: Square) -> u8

Converts to this type from the input type.
source§

impl From<Square> for usize

source§

fn from(value: Square) -> usize

Converts to this type from the input type.
source§

impl FromIterator<Square> for Bitboard

source§

fn from_iter<T>(iter: T) -> Bitboardwhere T: IntoIterator<Item = Square>,

Creates a value from an iterator. Read more
source§

impl FromStr for Square

§

type Err = ParseSquareError

The associated error which can be returned from parsing.
source§

fn from_str(s: &str) -> Result<Square, ParseSquareError>

Parses a string s to return a value of this type. Read more
source§

impl Hash for Square

source§

fn hash<__H: Hasher>(&self, state: &mut __H)

Feeds this value into the given Hasher. Read more
1.3.0 · source§

fn hash_slice<H>(data: &[Self], state: &mut H)where H: Hasher, Self: Sized,

Feeds a slice of this type into the given Hasher. Read more
source§

impl Ord for Square

source§

fn cmp(&self, other: &Square) -> Ordering

This method returns an Ordering between self and other. Read more
1.21.0 · source§

fn max(self, other: Self) -> Selfwhere Self: Sized,

Compares and returns the maximum of two values. Read more
1.21.0 · source§

fn min(self, other: Self) -> Selfwhere Self: Sized,

Compares and returns the minimum of two values. Read more
1.50.0 · source§

fn clamp(self, min: Self, max: Self) -> Selfwhere Self: Sized + PartialOrd<Self>,

Restrict a value to a certain interval. Read more
source§

impl PartialEq<Square> for Square

source§

fn eq(&self, other: &Square) -> bool

This method tests for self and other values to be equal, and is used by ==.
1.0.0 · source§

fn ne(&self, other: &Rhs) -> bool

This method tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.
source§

impl PartialOrd<Square> for Square

source§

fn partial_cmp(&self, other: &Square) -> Option<Ordering>

This method returns an ordering between self and other values if one exists. Read more
1.0.0 · source§

fn lt(&self, other: &Rhs) -> bool

This method tests less than (for self and other) and is used by the < operator. Read more
1.0.0 · source§

fn le(&self, other: &Rhs) -> bool

This method tests less than or equal to (for self and other) and is used by the <= operator. Read more
1.0.0 · source§

fn gt(&self, other: &Rhs) -> bool

This method tests greater than (for self and other) and is used by the > operator. Read more
1.0.0 · source§

fn ge(&self, other: &Rhs) -> bool

This method tests greater than or equal to (for self and other) and is used by the >= operator. Read more
source§

impl Sub<Square> for Square

§

type Output = i32

The resulting type after applying the - operator.
source§

fn sub(self, other: Square) -> i32

Performs the - operation. Read more
source§

impl TryFrom<i16> for Square

§

type Error = TryFromIntError

The type returned in the event of a conversion error.
source§

fn try_from(value: i16) -> Result<Square, Self::Error>

Performs the conversion.
source§

impl TryFrom<i32> for Square

§

type Error = TryFromIntError

The type returned in the event of a conversion error.
source§

fn try_from(value: i32) -> Result<Square, Self::Error>

Performs the conversion.
source§

impl TryFrom<i64> for Square

§

type Error = TryFromIntError

The type returned in the event of a conversion error.
source§

fn try_from(value: i64) -> Result<Square, Self::Error>

Performs the conversion.
source§

impl TryFrom<i8> for Square

§

type Error = TryFromIntError

The type returned in the event of a conversion error.
source§

fn try_from(value: i8) -> Result<Square, Self::Error>

Performs the conversion.
source§

impl TryFrom<isize> for Square

§

type Error = TryFromIntError

The type returned in the event of a conversion error.
source§

fn try_from(value: isize) -> Result<Square, Self::Error>

Performs the conversion.
source§

impl TryFrom<u16> for Square

§

type Error = TryFromIntError

The type returned in the event of a conversion error.
source§

fn try_from(value: u16) -> Result<Square, Self::Error>

Performs the conversion.
source§

impl TryFrom<u32> for Square

§

type Error = TryFromIntError

The type returned in the event of a conversion error.
source§

fn try_from(value: u32) -> Result<Square, Self::Error>

Performs the conversion.
source§

impl TryFrom<u64> for Square

§

type Error = TryFromIntError

The type returned in the event of a conversion error.
source§

fn try_from(value: u64) -> Result<Square, Self::Error>

Performs the conversion.
source§

impl TryFrom<u8> for Square

§

type Error = TryFromIntError

The type returned in the event of a conversion error.
source§

fn try_from(value: u8) -> Result<Square, Self::Error>

Performs the conversion.
source§

impl TryFrom<usize> for Square

§

type Error = TryFromIntError

The type returned in the event of a conversion error.
source§

fn try_from(value: usize) -> Result<Square, Self::Error>

Performs the conversion.
source§

impl Copy for Square

source§

impl Eq for Square

source§

impl IsEnabled for Square

Available on crate feature nohash-hasher only.
source§

impl StructuralEq for Square

source§

impl StructuralPartialEq for Square

Auto Trait Implementations§

Blanket Implementations§

source§

impl<T> Any for Twhere T: 'static + ?Sized,

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> Borrow<T> for Twhere T: ?Sized,

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for Twhere T: ?Sized,

source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

source§

impl<T, U> Into<U> for Twhere U: From<T>,

source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

source§

impl<T> ToOwned for Twhere T: Clone,

§

type Owned = T

The resulting type after obtaining ownership.
source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
source§

impl<T> ToString for Twhere T: Display + ?Sized,

source§

default fn to_string(&self) -> String

Converts the given value to a String. Read more
source§

impl<T, U> TryFrom<U> for Twhere U: Into<T>,

§

type Error = Infallible

The type returned in the event of a conversion error.
source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
source§

impl<T, U> TryInto<U> for Twhere U: TryFrom<T>,

§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.