Crate shakmaty

Source
Expand description

A library for chess move generation.

§Examples

Generate legal moves in the starting position:

use shakmaty::{Chess, Position};

let pos = Chess::default();
let legals = pos.legal_moves();
assert_eq!(legals.len(), 20);

Play moves:

use shakmaty::{Square, Move, Role};

// 1. e4
let pos = pos.play(&Move::Normal {
    role: Role::Pawn,
    from: Square::E2,
    to: Square::E4,
    capture: None,
    promotion: None,
})?;

Detect game end conditions:

assert!(!pos.is_checkmate());
assert!(!pos.is_stalemate());
assert!(!pos.is_insufficient_material());
assert_eq!(pos.outcome(), None); // no winner yet

Also supports FEN, SAN and UCI formats for positions and moves.

§Feature flags

  • alloc: Enables APIs which require the alloc crate (e.g. FEN string rendering).
  • std: Implements the std::error::Error trait for various errors in the crate. Implies the alloc feature (since std depends on alloc anyway). Enabled by default for convenience. For no_std environments, this must be disabled with default-features = false.
  • variant: Enables support for all Lichess variants.
  • serde: Implements serde::Serialize and serde::Deserialize for types with unique natural representations.
  • nohash-hasher: Implements nohash_hasher::IsEnabled for sensible types.

Re-exports§

pub use bitboard::Bitboard;
pub use board::Board;

Modules§

attacks
Attack and ray tables.
bitboard
Sets of squares.
board
Piece positions on a board.
fen
Parse and write Forsyth-Edwards-Notation.
san
Read and write Standard Algebraic Notation.
uci
Parse and write moves in Universal Chess Interface representation.
variantvariant
Chess variants.
zobrist
Zobrist hashing for positions.

Structs§

ByCastlingSide
Container with values for each CastlingSide.
ByColor
Container with values for each Color.
ByRole
Container with values for each Role.
Castles
Castling paths and unmoved rooks.
Chess
A standard Chess position.
ParseColorError
Error when parsing an invalid color name.
ParseSquareError
Error when parsing an invalid square name.
Piece
A piece with Color and Role.
PlayError
Error when trying to play an illegal move.
PositionError
Error when trying to create a Position from an illegal Setup.
PositionErrorKinds
Reasons for a Setup not being a legal Position.
RemainingChecks
The number of checks the respective side needs to give in order to win (in a game of Three-Check).
Setup
A not necessarily legal position.

Enums§

CastlingMode
Standard or Chess960.
CastlingSide
KingSide (O-O) or QueenSide (O-O-O).
Color
White or Black.
EnPassantMode
When to include the en passant square.
File
A file of the chessboard.
Move
Information about a move.
Outcome
Outcome of a game.
ParseOutcomeError
Error when parsing the outcome of a game.
Rank
A rank of the chessboard.
Role
Piece types: Pawn, Knight, Bishop, Rook, Queen, King.
Square
A square of the chessboard.

Traits§

FromSetup
Validate and set up a playable Position. All provided chess variants support this.
Position
A playable chess or chess variant position. See Chess for a concrete implementation.

Functions§

perft
Counts legal move paths of a given length.

Type Aliases§

MoveList
A container for moves that can be stored inline on the stack.