Crate shakmaty[][src]

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

  • variant: Enables shakmaty::variant module for all Lichess variants.
  • step: Implements std::iter::Step for Square, File, and Rank. Requires nightly.

Re-exports

pub use crate::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.

variantvariant

Chess variants.

Zobrist hashing for positions.

Structs

Piece positions on a board.

Container with values for each Color.

Iterator over ByColor.

Castling paths and unmoved rooks.

A standard Chess position.

The material configuration of one side.

Error when parsing an invalid color name.

Error when parsing an invalid material key.

Error when parsing an invalid square name.

A piece with Color and Role.

Iterator over the pieces of a Board.

Error when trying to play an illegal move.

Error when trying to create a Position from an illegal Setup.

Reasons for a Setup not being a legal Position.

The number of checks the respective side needs to give in order to win (in a game of Three-Check).

Enums

Standard or Chess960.

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

Validate and set up an arbitrary position. All provided chess variants support this.

A legal chess or chess variant position. See Chess for a concrete implementation. Extends Setup.

A not necessarily legal position.

Functions

Counts legal move paths of a given length.

Type Definitions

The material configuration of both sides.

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