mirror of
https://github.com/italicsjenga/agb.git
synced 2024-12-23 08:11:33 +11:00
Use const fn to make resizes a bit faster
This commit is contained in:
parent
65dd1341e5
commit
943fd1154f
|
@ -907,7 +907,7 @@ const fn number_before_resize(capacity: usize) -> usize {
|
|||
capacity * 60 / 100
|
||||
}
|
||||
|
||||
#[derive(Default, Clone, Copy, PartialEq, Eq)]
|
||||
#[derive(Clone, Copy, PartialEq, Eq)]
|
||||
pub(crate) struct HashType(u32);
|
||||
|
||||
impl From<usize> for HashType {
|
||||
|
@ -919,13 +919,17 @@ impl From<usize> for HashType {
|
|||
}
|
||||
|
||||
impl HashType {
|
||||
pub(crate) const fn new() -> Self {
|
||||
Self(0)
|
||||
}
|
||||
|
||||
// 32 bit mix function from here: https://gist.github.com/badboy/6267743
|
||||
fn bit_mix(key: u32) -> Self {
|
||||
use core::num::Wrapping;
|
||||
|
||||
let key = Wrapping(key);
|
||||
|
||||
let key = (key + Wrapping(0x7ed55d16u32)) + (key << 12);
|
||||
let key = (key + Wrapping(0x7ed55d16)) + (key << 12);
|
||||
let key = (key ^ Wrapping(0xc761c23c)) ^ (key >> 19);
|
||||
let key = (key + Wrapping(0x165667b1)) + (key << 5);
|
||||
let key = (key + Wrapping(0xd3a2646c)) ^ (key << 9);
|
||||
|
|
|
@ -16,9 +16,9 @@ pub(crate) struct Node<K, V> {
|
|||
}
|
||||
|
||||
impl<K, V> Node<K, V> {
|
||||
fn new() -> Self {
|
||||
pub(crate) const fn new() -> Self {
|
||||
Self {
|
||||
hash: HashType::default(),
|
||||
hash: HashType::new(),
|
||||
distance_to_initial_bucket: -1,
|
||||
key: MaybeUninit::uninit(),
|
||||
value: MaybeUninit::uninit(),
|
||||
|
@ -144,12 +144,6 @@ impl<K, V> Drop for Node<K, V> {
|
|||
}
|
||||
}
|
||||
|
||||
impl<K, V> Default for Node<K, V> {
|
||||
fn default() -> Self {
|
||||
Self::new()
|
||||
}
|
||||
}
|
||||
|
||||
impl<K, V> Clone for Node<K, V>
|
||||
where
|
||||
K: Clone,
|
||||
|
|
|
@ -19,7 +19,7 @@ impl<K, V, ALLOCATOR: ClonableAllocator> NodeStorage<K, V, ALLOCATOR> {
|
|||
|
||||
let mut nodes = Vec::with_capacity_in(capacity, alloc);
|
||||
for _ in 0..capacity {
|
||||
nodes.push(Node::default());
|
||||
nodes.push(Node::new());
|
||||
}
|
||||
|
||||
Self {
|
||||
|
|
Loading…
Reference in a new issue