mirror of
https://github.com/RGBCube/cstree
synced 2025-07-27 09:07:44 +00:00
use rustc_hash instead of fxhash (#73)
* use rustc_hash instead of fxhash * implement debug properly
This commit is contained in:
parent
c061bf5a6b
commit
e90300f4fc
5 changed files with 25 additions and 15 deletions
|
@ -13,7 +13,7 @@ rust-version.workspace = true
|
|||
|
||||
[dependencies]
|
||||
text-size = "1.1.0"
|
||||
fxhash = "0.2.1"
|
||||
rustc-hash = "2.1.1"
|
||||
parking_lot = "0.12.1"
|
||||
|
||||
# Arc
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
use std::hash::{Hash, Hasher};
|
||||
|
||||
use fxhash::{FxHashMap, FxHasher32};
|
||||
use rustc_hash::{FxHashMap, FxHasher};
|
||||
use text_size::TextSize;
|
||||
|
||||
use crate::{
|
||||
|
@ -180,7 +180,7 @@ where
|
|||
fn node<S: Syntax>(&mut self, kind: S, all_children: &mut Vec<GreenElement>, offset: usize) -> GreenNode {
|
||||
// NOTE: this fn must remove all children starting at `first_child` from `all_children` before returning
|
||||
let kind = S::into_raw(kind);
|
||||
let mut hasher = FxHasher32::default();
|
||||
let mut hasher = FxHasher::default();
|
||||
let mut text_len: TextSize = 0.into();
|
||||
for child in &all_children[offset..] {
|
||||
text_len += child.text_len();
|
||||
|
|
|
@ -3,7 +3,7 @@ use std::{
|
|||
slice,
|
||||
};
|
||||
|
||||
use fxhash::FxHasher32;
|
||||
use rustc_hash::FxHasher;
|
||||
|
||||
use crate::{
|
||||
green::{iter::GreenNodeChildren, GreenElement, PackedGreenElement},
|
||||
|
@ -41,7 +41,7 @@ impl GreenNode {
|
|||
I: IntoIterator<Item = GreenElement>,
|
||||
I::IntoIter: ExactSizeIterator,
|
||||
{
|
||||
let mut hasher = FxHasher32::default();
|
||||
let mut hasher = FxHasher::default();
|
||||
let mut text_len: TextSize = 0.into();
|
||||
let children = children
|
||||
.into_iter()
|
||||
|
|
|
@ -2,15 +2,15 @@
|
|||
|
||||
use core::fmt;
|
||||
|
||||
use fxhash::FxBuildHasher as Hasher;
|
||||
use indexmap::IndexSet;
|
||||
use rustc_hash::FxBuildHasher;
|
||||
|
||||
use super::{InternKey, Interner, Resolver, TokenKey};
|
||||
|
||||
/// The default [`Interner`] used to deduplicate green token strings.
|
||||
#[derive(Debug)]
|
||||
pub struct TokenInterner {
|
||||
id_set: IndexSet<String, Hasher>,
|
||||
id_set: IndexSet<String, FxBuildHasher>,
|
||||
}
|
||||
|
||||
impl TokenInterner {
|
||||
|
|
|
@ -2,10 +2,10 @@
|
|||
|
||||
#![cfg(feature = "lasso_compat")]
|
||||
|
||||
use std::{hash::BuildHasher, num::NonZeroUsize};
|
||||
use std::{fmt, hash::BuildHasher, num::NonZeroUsize};
|
||||
|
||||
use fxhash::FxBuildHasher as Hasher;
|
||||
use lasso::{Capacity, Rodeo, ThreadedRodeo};
|
||||
use rustc_hash::FxBuildHasher;
|
||||
|
||||
use crate::interning::{Interner, Resolver, TokenKey};
|
||||
|
||||
|
@ -50,9 +50,8 @@ macro_rules! impl_traits {
|
|||
}
|
||||
|
||||
/// The default [`Interner`] used to deduplicate green token strings.
|
||||
#[derive(Debug)]
|
||||
pub struct TokenInterner {
|
||||
rodeo: Rodeo<TokenKey, Hasher>,
|
||||
rodeo: Rodeo<TokenKey, FxBuildHasher>,
|
||||
}
|
||||
|
||||
impl TokenInterner {
|
||||
|
@ -60,7 +59,7 @@ impl TokenInterner {
|
|||
Self {
|
||||
rodeo: Rodeo::with_capacity_and_hasher(
|
||||
Capacity::new(DEFAULT_STRING_CAPACITY, DEFAULT_BYTE_CAPACITY),
|
||||
Hasher::default(),
|
||||
FxBuildHasher,
|
||||
),
|
||||
}
|
||||
}
|
||||
|
@ -73,6 +72,12 @@ impl TokenInterner {
|
|||
}
|
||||
}
|
||||
|
||||
impl fmt::Debug for TokenInterner {
|
||||
fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
|
||||
f.write_str("TokenInterner")
|
||||
}
|
||||
}
|
||||
|
||||
impl_traits!(for TokenInterner);
|
||||
|
||||
#[cfg(feature = "multi_threaded_interning")]
|
||||
|
@ -87,9 +92,8 @@ mod multi_threaded {
|
|||
/// Note that [`Interner`] and [`Resolver`] are also implemented for `&MultiThreadTokenInterner` so you can pass
|
||||
/// `&mut &interner` in shared contexts.
|
||||
#[cfg_attr(doc_cfg, doc(cfg(feature = "multi_threaded_interning")))]
|
||||
#[derive(Debug)]
|
||||
pub struct MultiThreadedTokenInterner {
|
||||
rodeo: ThreadedRodeo<TokenKey, Hasher>,
|
||||
rodeo: ThreadedRodeo<TokenKey, FxBuildHasher>,
|
||||
}
|
||||
|
||||
impl MultiThreadedTokenInterner {
|
||||
|
@ -97,12 +101,18 @@ mod multi_threaded {
|
|||
Self {
|
||||
rodeo: ThreadedRodeo::with_capacity_and_hasher(
|
||||
Capacity::new(DEFAULT_STRING_CAPACITY, DEFAULT_BYTE_CAPACITY),
|
||||
Hasher::default(),
|
||||
FxBuildHasher,
|
||||
),
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
impl fmt::Debug for MultiThreadedTokenInterner {
|
||||
fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
|
||||
f.write_str("MultiThreadedTokenInterner")
|
||||
}
|
||||
}
|
||||
|
||||
impl_traits!(for MultiThreadedTokenInterner, if #[cfg(feature = "multi_threaded_interning")]);
|
||||
|
||||
impl_traits!(for &MultiThreadedTokenInterner, if #[cfg(feature = "multi_threaded_interning")]);
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue