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 thealloc
crate (e.g. FEN string rendering).std
: Implements thestd::error::Error
trait for various errors in the crate. Implies thealloc
feature (sincestd
depends onalloc
anyway). Enabled by default for convenience. Forno_std
environments, this must be disabled withdefault-features = false
.variant
: Enables support for all Lichess variants.nohash-hasher
: Implementsnohash_hasher::IsEnabled
for sensible types.
Re-exports§
Modules§
- Attack and ray tables.
- Sets of squares.
- Piece positions on a board.
- Parse and write Forsyth-Edwards-Notation.
- Read and write Standard Algebraic Notation.
- Parse and write moves in Universal Chess Interface representation.
- variant
variant
Chess variants. - Zobrist hashing for positions.
Structs§
- Container with values for each
CastlingSide
. - Container with values for each
Color
. - Container with values for each
Role
. - Castling paths and unmoved rooks.
- A standard Chess position.
- Error when parsing an invalid color name.
- Error when parsing an invalid square name.
- Error when trying to play an illegal move.
- The number of checks the respective side needs to give in order to win (in a game of Three-Check).
- A not necessarily legal position.
Enums§
Standard
orChess960
.KingSide
(O-O) orQueenSide
(O-O-O).White
orBlack
.- When to include the en passant square.
- A file of the chessboard.
- Information about a move.
- Outcome of a game.
- Error when parsing the outcome of a game.
- A rank of the chessboard.
- Piece types:
Pawn
,Knight
,Bishop
,Rook
,Queen
,King
. - A square of the chessboard.
Traits§
- Validate and set up a playable
Position
. All provided chess variants support this. - A playable chess or chess variant position. See
Chess
for a concrete implementation.
Functions§
- Counts legal move paths of a given length.
Type Aliases§
- A container for moves that can be stored inline on the stack.