Struct minorhacks_chess::BoardBuilder[][src]

pub struct BoardBuilder { /* fields omitted */ }

Represents a chess position that has not been validated for legality.

This structure is useful in the following cases:

  • You are trying to build a chess board manually in code.
  • The Board structure will try to keep the position fully legal, which will prevent you from placing pieces arbitrarily. This structure will not.
  • You want to display the chess position in a UI.
  • You want to convert between formats like FEN.
use minorhacks_chess::{BoardBuilder, Board, Square, Color, Piece};
use std::convert::TryFrom;
let mut position = BoardBuilder::new();
position.piece(Square::A1, Piece::King, Color::White);
position.piece(Square::A8, Piece::Rook, Color::Black);
position.piece(Square::D1, Piece::King, Color::Black);

// You can index the position by the square:
assert_eq!(position[Square::A1], Some((Piece::King, Color::White)));

// White is in check, but that's ok, it's white's turn to move.
assert!(Board::try_from(&position).is_ok());

// Now White is in check, but Black is ready to move.  This position is invalid.
position.side_to_move(Color::Black);
assert!(Board::try_from(position).is_err());

// One liners are possible with the builder pattern.
use std::convert::TryInto;

let res: Result<Board, _> = BoardBuilder::new()
                       .piece(Square::A1, Piece::King, Color::White)
                       .piece(Square::A8, Piece::King, Color::Black)
                       .try_into();
assert!(res.is_ok());

Implementations

impl BoardBuilder[src]

pub fn new() -> BoardBuilder[src]

Construct a new, empty, BoardBuilder.

  • No pieces are on the board
  • CastleRights are empty for both sides
  • en_passant is not set
  • side_to_move is Color::White
use minorhacks_chess::{BoardBuilder, Board, Square, Color, Piece};
use std::convert::TryInto;

let board: Board = BoardBuilder::new()
    .piece(Square::A1, Piece::King, Color::White)
    .piece(Square::A8, Piece::King, Color::Black)
    .try_into()?;

pub fn setup<'a>(
    pieces: impl IntoIterator<Item = &'a (Square, Piece, Color)>,
    side_to_move: Color,
    white_castle_rights: CastleRights,
    black_castle_rights: CastleRights,
    en_passant: Option<File>
) -> BoardBuilder
[src]

Set up a board with everything pre-loaded.

use minorhacks_chess::{BoardBuilder, Board, Square, Color, Piece, CastleRights};
use std::convert::TryInto;

let board: Board = BoardBuilder::setup(
        &[
            (Square::A1, Piece::King, Color::White),
            (Square::H8, Piece::King, Color::Black)
        ],
        Color::Black,
        CastleRights::NoRights,
        CastleRights::NoRights,
        None)
    .try_into()?;

pub fn get_side_to_move(&self) -> Color[src]

Get the current player

use minorhacks_chess::{BoardBuilder, Board, Color};

let bb: BoardBuilder = Board::default().into();
assert_eq!(bb.get_side_to_move(), Color::White);

pub fn get_castle_rights(&self, color: Color) -> CastleRights[src]

Get the castle rights for a player

use minorhacks_chess::{BoardBuilder, Board, CastleRights, Color};

let bb: BoardBuilder = Board::default().into();
assert_eq!(bb.get_castle_rights(Color::White), CastleRights::Both);

pub fn get_en_passant(&self) -> Option<Square>[src]

Get the current en_passant square

use minorhacks_chess::{BoardBuilder, Board, Square, ChessMove};

let board = Board::default()
    .make_move_new(ChessMove::new(Square::E2, Square::E4, None))
    .make_move_new(ChessMove::new(Square::H7, Square::H6, None))
    .make_move_new(ChessMove::new(Square::E4, Square::E5, None))
    .make_move_new(ChessMove::new(Square::D7, Square::D5, None));
let bb: BoardBuilder = board.into();
assert_eq!(bb.get_en_passant(), Some(Square::D5));

pub fn side_to_move(&mut self, color: Color) -> &mut Self[src]

Set the side to move on the position

This function can be used on self directly or in a builder pattern.

use minorhacks_chess::{BoardBuilder, Color};
BoardBuilder::new()
             .side_to_move(Color::Black);      

let mut bb = BoardBuilder::new();
bb.side_to_move(Color::Black);

pub fn castle_rights(
    &mut self,
    color: Color,
    castle_rights: CastleRights
) -> &mut Self
[src]

Set the castle rights for a particular color on the position

This function can be used on self directly or in a builder pattern.

use minorhacks_chess::{BoardBuilder, Color, CastleRights};
BoardBuilder::new()
             .castle_rights(Color::White, CastleRights::NoRights);

let mut bb = BoardBuilder::new();
bb.castle_rights(Color::Black, CastleRights::Both);

pub fn piece(&mut self, square: Square, piece: Piece, color: Color) -> &mut Self[src]

Set a piece on a square.

Note that this can and will overwrite another piece on the square if need.

Note also that this will not update your castle rights.

This function can be used on self directly or in a builder pattern.

use minorhacks_chess::{BoardBuilder, Color, Square, Piece};

BoardBuilder::new()
             .piece(Square::A1, Piece::Rook, Color::White);

let mut bb = BoardBuilder::new();
bb.piece(Square::A8, Piece::Rook, Color::Black);

pub fn clear_square(&mut self, square: Square) -> &mut Self[src]

Clear a square on the board.

Note that this will not update your castle rights.

This function can be used on self directly or in a builder pattern.

use minorhacks_chess::{BoardBuilder, Square, Board};

let mut bb: BoardBuilder = Board::default().into();
bb.clear_square(Square::A1);

pub fn en_passant(&mut self, file: Option<File>) -> &mut Self[src]

Set or clear the en_passant File.

This function can be used directly or in a builder pattern.

use minorhacks_chess::{BoardBuilder, Square, Board, File, Color, Piece};

BoardBuilder::new()
             .piece(Square::E4, Piece::Pawn, Color::White)
             .en_passant(Some(File::E));

Trait Implementations

impl Clone for BoardBuilder[src]

fn clone(&self) -> BoardBuilder[src]

Returns a copy of the value. Read more

fn clone_from(&mut self, source: &Self)1.0.0[src]

Performs copy-assignment from source. Read more

impl Default for BoardBuilder[src]

fn default() -> BoardBuilder[src]

Returns the “default value” for a type. Read more

impl Display for BoardBuilder[src]

fn fmt(&self, f: &mut Formatter<'_>) -> Result[src]

Formats the value using the given formatter. Read more

impl From<&'_ Board> for BoardBuilder[src]

fn from(board: &Board) -> Self[src]

Performs the conversion.

impl From<Board> for BoardBuilder[src]

fn from(board: Board) -> Self[src]

Performs the conversion.

impl FromStr for BoardBuilder[src]

type Err = Error

The associated error which can be returned from parsing.

fn from_str(value: &str) -> Result<Self, Self::Err>[src]

Parses a string s to return a value of this type. Read more

impl Index<Square> for BoardBuilder[src]

type Output = Option<(Piece, Color)>

The returned type after indexing.

fn index(&self, index: Square) -> &Self::Output[src]

Performs the indexing (container[index]) operation. Read more

impl IndexMut<Square> for BoardBuilder[src]

fn index_mut(&mut self, index: Square) -> &mut Self::Output[src]

Performs the mutable indexing (container[index]) operation. Read more

impl TryFrom<&'_ BoardBuilder> for Board[src]

type Error = Error

The type returned in the event of a conversion error.

fn try_from(fen: &BoardBuilder) -> Result<Self, Self::Error>[src]

Performs the conversion.

impl TryFrom<&'_ mut BoardBuilder> for Board[src]

type Error = Error

The type returned in the event of a conversion error.

fn try_from(fen: &mut BoardBuilder) -> Result<Self, Self::Error>[src]

Performs the conversion.

impl TryFrom<BoardBuilder> for Board[src]

type Error = Error

The type returned in the event of a conversion error.

fn try_from(fen: BoardBuilder) -> Result<Self, Self::Error>[src]

Performs the conversion.

impl Copy for BoardBuilder[src]

Auto Trait Implementations

Blanket Implementations

impl<T> Any for T where
    T: 'static + ?Sized
[src]

pub fn type_id(&self) -> TypeId[src]

Gets the TypeId of self. Read more

impl<T> Borrow<T> for T where
    T: ?Sized
[src]

pub fn borrow(&self) -> &T[src]

Immutably borrows from an owned value. Read more

impl<T> BorrowMut<T> for T where
    T: ?Sized
[src]

pub fn borrow_mut(&mut self) -> &mut T[src]

Mutably borrows from an owned value. Read more

impl<T> From<T> for T[src]

pub fn from(t: T) -> T[src]

Performs the conversion.

impl<T, U> Into<U> for T where
    U: From<T>, 
[src]

pub fn into(self) -> U[src]

Performs the conversion.

impl<T> ToOwned for T where
    T: Clone
[src]

type Owned = T

The resulting type after obtaining ownership.

pub fn to_owned(&self) -> T[src]

Creates owned data from borrowed data, usually by cloning. Read more

pub fn clone_into(&self, target: &mut T)[src]

🔬 This is a nightly-only experimental API. (toowned_clone_into)

recently added

Uses borrowed data to replace owned data, usually by cloning. Read more

impl<T> ToString for T where
    T: Display + ?Sized
[src]

pub default fn to_string(&self) -> String[src]

Converts the given value to a String. Read more

impl<T, U> TryFrom<U> for T where
    U: Into<T>, 
[src]

type Error = Infallible

The type returned in the event of a conversion error.

pub fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>[src]

Performs the conversion.

impl<T, U> TryInto<U> for T where
    U: TryFrom<T>, 
[src]

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.

pub fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>[src]

Performs the conversion.