Module shakmaty::fen

source ·
Expand description

Parse and write Forsyth-Edwards-Notation.

Examples

fen::fen() and fen::epd() can produce a FEN for any Setup.

use shakmaty::fen;
use shakmaty::Chess;

let pos = Chess::default();

assert_eq!(fen::epd(&pos),
           "rnbqkbnr/pppppppp/8/8/8/8/PPPPPPPP/RNBQKBNR w KQkq -");

Fen and Board also implement Display:

use shakmaty::fen::Fen;

let empty_fen = Fen::empty();
assert_eq!(empty_fen.to_string(), "8/8/8/8/8/8/8/8 w - - 0 1");

Parsing FENs:

use shakmaty::Position;

let input = "r1bqkbnr/ppp2Qpp/2np4/4p3/2B1P3/8/PPPP1PPP/RNB1K1NR b KQkq - 0 4";

let setup: Fen = input.parse()?;
let position: Chess = setup.position()?;
assert!(position.is_checkmate());

Structs

A parsed FEN.
FEN formatting options.

Enums

Errors that can occur when parsing a FEN.

Functions

Create a board FEN such as rnbqkbnr/pppppppp/8/8/8/8/PPPPPPPP/RNBQKBNR with default FenOpts.
Create an EPD such as rnbqkbnr/pppppppp/8/8/8/8/PPPPPPPP/RNBQKBNR w KQkq - with default FenOpts.
Create a FEN such as rnbqkbnr/pppppppp/8/8/8/8/PPPPPPPP/RNBQKBNR w KQkq - 0 1 with default FenOpts.