summaryrefslogtreecommitdiff
path: root/engine
diff options
context:
space:
mode:
Diffstat (limited to 'engine')
-rw-r--r--engine/Cargo.toml1
-rw-r--r--engine/src/lazysort.rs4
-rw-r--r--engine/src/lib.rs1
-rw-r--r--engine/src/stackvec.rs64
4 files changed, 3 insertions, 67 deletions
diff --git a/engine/Cargo.toml b/engine/Cargo.toml
index 9f81ec1..3e17c08 100644
--- a/engine/Cargo.toml
+++ b/engine/Cargo.toml
@@ -12,6 +12,7 @@ model = {path = "../model"}
byteorder = "1"
thiserror = "1"
parking_lot = "0.12"
+arrayvec = "0.7"
mimalloc = "0.1.39"
[dev-dependencies]
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;
- }
-}