chore: apply reviewers comment

This commit is contained in:
quake 2022-09-05 19:22:30 +09:00
parent 239438754c
commit d515eaf7cd
3 changed files with 19 additions and 5 deletions

View File

@ -27,6 +27,7 @@ rhai_codegen = { version = "1.4.1", path = "codegen", default-features = false }
no-std-compat = { version = "0.4", default-features = false, features = ["alloc"], optional = true }
libm = { version = "0.2", default-features = false, optional = true }
hashbrown = { version = "0.12", optional = true }
core-error = { version = "0.0", default-features = false, features = ["alloc"], optional = true }
serde = { version = "1.0", default-features = false, features = ["derive", "alloc"], optional = true }
serde_json = { version = "1.0", default-features = false, features = ["alloc"], optional = true }
@ -63,7 +64,7 @@ debugging = ["internals"] # enable debugging
serde = ["dep:serde", "smartstring/serde", "smallvec/serde"] # implement serde for rhai types
# compiling for no-std
no_std = ["no-std-compat", "num-traits/libm", "core-error", "libm", "ahash/compile-time-rng"]
no_std = ["no-std-compat", "num-traits/libm", "core-error", "libm", "ahash/compile-time-rng", "hashbrown"]
# compiling for WASM
wasm-bindgen = ["instant/wasm-bindgen"]

View File

@ -10,6 +10,9 @@ use crate::func::{
};
use crate::types::dynamic::AccessMode;
use crate::{Dynamic, Engine, Module, Position, RhaiResult, RhaiResultOf, Scope, ERR};
#[cfg(feature = "no_std")]
use hashbrown::hash_map::Entry;
#[cfg(not(feature = "no_std"))]
use std::collections::hash_map::Entry;
use std::num::NonZeroUsize;
#[cfg(feature = "no_std")]

View File

@ -4,12 +4,18 @@
use std::prelude::v1::*;
use std::{
any::TypeId,
collections::{HashMap, HashSet},
hash::{BuildHasher, Hash, Hasher},
};
pub type StraightHashMap<K, V> = HashMap<K, V, StraightHasherBuilder>;
pub type StraightHashSet<K> = HashSet<K, StraightHasherBuilder>;
#[cfg(feature = "no_std")]
pub type StraightHashMap<K, V> = hashbrown::HashMap<K, V, StraightHasherBuilder>;
#[cfg(feature = "no_std")]
pub type StraightHashSet<K> = hashbrown::HashSet<K, StraightHasherBuilder>;
#[cfg(not(feature = "no_std"))]
pub type StraightHashMap<K, V> = std::collections::HashMap<K, V, StraightHasherBuilder>;
#[cfg(not(feature = "no_std"))]
pub type StraightHashSet<K> = std::collections::HashSet<K, StraightHasherBuilder>;
/// Dummy hash value to map zeros to. This value can be anything.
///
@ -47,7 +53,11 @@ impl Hasher for StraightHasher {
}
fn write_u64(&mut self, i: u64) {
self.0 = i;
if i == 0 {
self.0 = ALT_ZERO_HASH;
} else {
self.0 = i;
}
}
}