History

Struct History 

Source
pub struct History { /* private fields */ }
Expand description

History primary use is for tracking repeated moves to prevent threefold repetition. It is stateful, in that functions assume the next interaction comes from the next possible move in a played game.

It contains the hashes of all previously visited positions, and the indices of positions which cannot be repeated in future positions.

Implementations§

Source§

impl History

Source

pub fn empty() -> Self

Create a new empty History.

Source

pub fn new(game: &Game, ztable: &ZobristTable) -> Self

Create a new History from a game and a Zobrist Table.

Source

pub fn push(&mut self, hash: HashKind, is_unrepeatable: bool)

Pushes a new position into the hash history, and updates the most recent unrepeatable index if applicable.

Source

pub fn pop(&mut self)

Pops a position from history stack. If the popped item was the most recent unrepeatable, then replace it with the previous unrepeatable index.

Source

pub fn contains(&self, hash: HashKind) -> bool

Returns true if the position occurs at least once in history. This is done by only checking the history from the last unrepeatable index to the most recent entry. All positions before the index cannot reoccur in the next sequence.

Source

pub fn contains_n(&self, hash: HashKind, count: usize) -> bool

Returns true if the position occurs in history at least n times, assuming the position to check may be the next move in this game’s history.

Source

pub fn is_threefold_repetition(&self, hash: HashKind) -> bool

Returns true if the position occurs twice in history, indicating that the given position is the second repetition (position occurs total of three times).

Source

pub fn is_twofold_repetition(&self, hash: HashKind) -> bool

Returns true if the position occurs once in history, indicating that the given position is the first repetition (position occurs total of two times).

Trait Implementations§

Source§

impl Clone for History

Source§

fn clone(&self) -> History

Returns a duplicate of the value. Read more
1.0.0 · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Debug for History

Source§

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

Formats the value using the given formatter. Read more
Source§

impl PartialEq for History

Source§

fn eq(&self, other: &History) -> bool

Tests for self and other values to be equal, and is used by ==.
1.0.0 · Source§

fn ne(&self, other: &Rhs) -> bool

Tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.
Source§

impl Eq for History

Source§

impl StructuralPartialEq for History

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

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

fn clone_into(&self, target: &mut T)

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

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

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

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

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

The type returned in the event of a conversion error.
Source§

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

Performs the conversion.
Source§

impl<V, T> VZip<V> for T
where V: MultiLane<T>,

Source§

fn vzip(self) -> V