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.legals();
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.
Re-exports
pub use bitboard::Bitboard;
Modules
Attack and ray tables.
Sets of squares.
Parse and write Forsyth-Edwards-Notation.
Read and write Standard Algebraic Notation.
Parse and write moves in Universal Chess Interface representation.
Chess variants.
Structs
Castling paths and unmoved rooks.
A standard Chess position.
Error in case of illegal moves.
The material configuration of both sides.
The material configuration of one side.
Error when parsing an invalid material key.
Error when parsing an invalid square name.
The number of checks the respective side needs to give in order to win
(in a game of Three-Check).
Enums
KingSide
(O-O) or QueenSide
(O-O-O).White
or Black
.A file of the chessboard.
Information about a move.
Outcome of a game.
A rank of the chessboard.
Piece types:
Pawn
, Knight
, Bishop
, Rook
, Queen
, King
.A square index.
Traits
A not necessarily legal position.
Functions
Counts legal move paths of a given length.
Type Definitions
A container for moves that can be stored inline on the stack.