diff options
| author | Micha White <botahamec@outlook.com> | 2023-12-21 19:52:05 -0500 |
|---|---|---|
| committer | Micha White <botahamec@outlook.com> | 2023-12-21 19:52:05 -0500 |
| commit | 94342846b8750cb753d2734b16dce20f249c6e65 (patch) | |
| tree | 255d11ff2cc22947a546b9b010f34de2e7bccb9d /engine/src | |
| parent | ed979b7d697904f0351ac8e1add08d131a35f791 (diff) | |
Import arrayvec
Diffstat (limited to 'engine/src')
| -rw-r--r-- | engine/src/lazysort.rs | 4 | ||||
| -rw-r--r-- | engine/src/lib.rs | 1 | ||||
| -rw-r--r-- | engine/src/stackvec.rs | 64 |
3 files changed, 2 insertions, 67 deletions
diff --git a/engine/src/lazysort.rs b/engine/src/lazysort.rs index ba32ee8..355509e 100644 --- a/engine/src/lazysort.rs +++ b/engine/src/lazysort.rs @@ -1,7 +1,7 @@ -use crate::stackvec::StackVec; +use arrayvec::ArrayVec; pub struct LazySort<T: Clone, F: Fn(&T) -> R, R: Ord, const CAPACITY: usize> { - collection: StackVec<T, CAPACITY>, + collection: ArrayVec<T, CAPACITY>, sorted: usize, sort_by: F, } diff --git a/engine/src/lib.rs b/engine/src/lib.rs index 8f9fde2..599ba08 100644 --- a/engine/src/lib.rs +++ b/engine/src/lib.rs @@ -17,7 +17,6 @@ pub use transposition_table::{TranspositionTable, TranspositionTableRef}; mod eval; mod lazysort; -mod stackvec; //mod tablebase; mod transposition_table; diff --git a/engine/src/stackvec.rs b/engine/src/stackvec.rs deleted file mode 100644 index cfdef2b..0000000 --- a/engine/src/stackvec.rs +++ /dev/null @@ -1,64 +0,0 @@ -use std::mem::MaybeUninit; -use std::ops::{Deref, DerefMut}; - -pub struct StackVec<T, const CAPACITY: usize> { - values: [MaybeUninit<T>; CAPACITY], - len: usize, -} - -impl<T, const CAPACITY: usize> Deref for StackVec<T, CAPACITY> { - type Target = [T]; - - fn deref(&self) -> &Self::Target { - self.as_slice() - } -} - -impl<T, const CAPACITY: usize> DerefMut for StackVec<T, CAPACITY> { - fn deref_mut(&mut self) -> &mut Self::Target { - self.as_mut_slice() - } -} - -impl<T, const CAPACITY: usize> FromIterator<T> for StackVec<T, CAPACITY> { - fn from_iter<I: IntoIterator<Item = T>>(iter: I) -> Self { - let mut this = Self::new(); - for item in iter { - this.push(item); - } - - this - } -} - -impl<T, const CAPACITY: usize> StackVec<T, CAPACITY> { - pub fn new() -> Self { - Self { - values: MaybeUninit::uninit_array(), - len: 0, - } - } - - pub fn len(&self) -> usize { - self.len - } - - pub fn is_empty(&self) -> bool { - self.len == 0 - } - - pub fn as_slice(&self) -> &[T] { - // safety: the first `len` elements are guaranteed to be initialized - unsafe { MaybeUninit::slice_assume_init_ref(&self.values[..self.len]) } - } - - pub fn as_mut_slice(&mut self) -> &mut [T] { - // safety: the first `len` elements are guaranteed to be initialized - unsafe { MaybeUninit::slice_assume_init_mut(&mut self.values[..self.len]) } - } - - pub fn push(&mut self, value: T) { - self.values[self.len].write(value); - self.len += 1; - } -} |
