Struct inanis::cache::search::TTable

source ·
pub struct TTable {
    pub table: Vec<TTableBucket>,
}

Fields§

§table: Vec<TTableBucket>

Implementations§

source§

impl TTable

source

pub fn new(size: usize) -> Self

Constructs a new instance of TTable by allocating size bytes of memory.

source

pub fn add( &self, hash: u64, score: i16, best_move: Move, depth: i8, ply: u16, type: u8, age: u8 )

Adds a new entry (storing the key, score, best_move, depth, ply, r#type and age) using hash to calculate an index of the bucket. Replacement strategy considers a few elements to optimize memory usage and prioritizes slots to replace as follows:

  • empty slots or slots with the same key as the new entry
  • slots with the smallest depth (if there are some old entries, prioritize them)

This function takes care of converting mate score using passed ply.

source

pub fn get(&self, hash: u64, ply: u16) -> Option<TTableResult>

Gets a wanted entry using hash to calculate an index of the bucket. This function takes care of converting mate score using passed ply. Returns None if entry does not exists or hash is incompatible with the stored key.

source

pub fn prefetch(&self, hash: u64)

Prefetches an entry using hash to calculate an index of the bucket. This function should be called early enough, so CPU has enough time to transfer data from the memory into cache.

source

pub fn get_best_move(&self, hash: u64) -> Option<Move>

Gets an entry’s best move using hash to calculate an index of the bucket. Returns None if entry does not exists or hash is incompatible with the stored key.

source

pub fn get_pv_line(&self, board: &mut Board, ply: i8) -> Vec<Move>

Retrieves PV line from the transposition table, using board position and the current ply.

source

pub fn get_usage(&self, resolution: usize) -> f32

Calculates an approximate percentage usage of the table, based on the first resolution entries.

source

fn get_key(&self, hash: u64) -> u16

Calculates a key for the hash by taking first 16 bits of it.

source

fn get_index(&self, hash: u64) -> usize

Calculates an index for the hash.

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> 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, U> TryFrom<U> for T
where U: Into<T>,

§

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>,

§

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.