Struct minorhacks_chess::CacheTable[][src]

pub struct CacheTable<T: Copy + Clone + PartialEq + PartialOrd> { /* fields omitted */ }

Store a cache of entries, each with an associated hash.

Implementations

impl<T: Copy + Clone + PartialEq + PartialOrd> CacheTable<T>[src]

pub fn new(size: usize, default: T) -> CacheTable<T>[src]

Create a new CacheTable with each associated entry initialized with a hash of ‘0’ Note: You must pass in a size where only 1 bit is set. (AKA: 2, 4, 8, 16, 1024, 65536, etc.) Panics when size is invalid.

pub fn get(&self, hash: u64) -> Option<T>[src]

Get a particular entry with the hash specified

pub fn add(&mut self, hash: u64, entry: T)[src]

Add (or overwrite) an entry with the associated hash

pub fn replace_if<F: Fn(T) -> bool>(&mut self, hash: u64, entry: T, replace: F)[src]

Replace an entry in the hash table with a user-specified replacement policy specified by replace. The replace closure is called with the previous entry occupying the hash table slot, and returns true or false to specify whether the entry should be replaced. Note that the previous entry may not have the same hash, but merely be the default initialization or a hash collision with hash.

use minorhacks_chess::CacheTable;


let mut table: CacheTable<char> = CacheTable::new(256, 'a');

assert_eq!(table.get(5), None);
// Note that 'a' is the default initialization value.
table.replace_if(5, 'b', |old_entry| old_entry != 'a');
assert_eq!(table.get(5), None);
table.replace_if(5, 'c', |old_entry| old_entry == 'a');
assert_eq!(table.get(5), Some('c'));
table.replace_if(5, 'd', |old_entry| old_entry == 'c');
assert_eq!(table.get(5), Some('d'));

Auto Trait Implementations

impl<T> RefUnwindSafe for CacheTable<T> where
    T: RefUnwindSafe

impl<T> Send for CacheTable<T> where
    T: Send

impl<T> Sync for CacheTable<T> where
    T: Sync

impl<T> Unpin for CacheTable<T>

impl<T> UnwindSafe for CacheTable<T> where
    T: UnwindSafe

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