Replace xxhash-rust with rustc-hash
This commit is contained in:
parent
35af0aa84f
commit
faa53647cc
6 changed files with 6 additions and 12 deletions
|
|
@ -155,7 +155,6 @@ thiserror = "1.0"
|
||||||
tiny-skia = "0.11"
|
tiny-skia = "0.11"
|
||||||
tokio = "1.0"
|
tokio = "1.0"
|
||||||
tracing = "0.1"
|
tracing = "0.1"
|
||||||
xxhash-rust = { version = "0.8", features = ["xxh3"] }
|
|
||||||
unicode-segmentation = "1.0"
|
unicode-segmentation = "1.0"
|
||||||
wasm-bindgen-futures = "0.4"
|
wasm-bindgen-futures = "0.4"
|
||||||
wasm-timer = "0.2"
|
wasm-timer = "0.2"
|
||||||
|
|
|
||||||
|
|
@ -21,10 +21,10 @@ log.workspace = true
|
||||||
num-traits.workspace = true
|
num-traits.workspace = true
|
||||||
once_cell.workspace = true
|
once_cell.workspace = true
|
||||||
palette.workspace = true
|
palette.workspace = true
|
||||||
|
rustc-hash.workspace = true
|
||||||
smol_str.workspace = true
|
smol_str.workspace = true
|
||||||
thiserror.workspace = true
|
thiserror.workspace = true
|
||||||
web-time.workspace = true
|
web-time.workspace = true
|
||||||
xxhash-rust.workspace = true
|
|
||||||
|
|
||||||
dark-light.workspace = true
|
dark-light.workspace = true
|
||||||
dark-light.optional = true
|
dark-light.optional = true
|
||||||
|
|
|
||||||
|
|
@ -1,7 +1,7 @@
|
||||||
/// The hasher used to compare layouts.
|
/// The hasher used to compare layouts.
|
||||||
#[allow(missing_debug_implementations)] // Doesn't really make sense to have debug on the hasher state anyways.
|
#[allow(missing_debug_implementations)] // Doesn't really make sense to have debug on the hasher state anyways.
|
||||||
#[derive(Default)]
|
#[derive(Default)]
|
||||||
pub struct Hasher(xxhash_rust::xxh3::Xxh3);
|
pub struct Hasher(rustc_hash::FxHasher);
|
||||||
|
|
||||||
impl core::hash::Hasher for Hasher {
|
impl core::hash::Hasher for Hasher {
|
||||||
fn write(&mut self, bytes: &[u8]) {
|
fn write(&mut self, bytes: &[u8]) {
|
||||||
|
|
|
||||||
|
|
@ -34,7 +34,6 @@ raw-window-handle.workspace = true
|
||||||
rustc-hash.workspace = true
|
rustc-hash.workspace = true
|
||||||
thiserror.workspace = true
|
thiserror.workspace = true
|
||||||
unicode-segmentation.workspace = true
|
unicode-segmentation.workspace = true
|
||||||
xxhash-rust.workspace = true
|
|
||||||
|
|
||||||
image.workspace = true
|
image.workspace = true
|
||||||
image.optional = true
|
image.optional = true
|
||||||
|
|
|
||||||
|
|
@ -2,9 +2,9 @@
|
||||||
use crate::core::{Font, Size};
|
use crate::core::{Font, Size};
|
||||||
use crate::text;
|
use crate::text;
|
||||||
|
|
||||||
use rustc_hash::{FxHashMap, FxHashSet};
|
use rustc_hash::{FxHashMap, FxHashSet, FxHasher};
|
||||||
use std::collections::hash_map;
|
use std::collections::hash_map;
|
||||||
use std::hash::{BuildHasher, Hash, Hasher};
|
use std::hash::{Hash, Hasher};
|
||||||
|
|
||||||
/// A store of recently used sections of text.
|
/// A store of recently used sections of text.
|
||||||
#[allow(missing_debug_implementations)]
|
#[allow(missing_debug_implementations)]
|
||||||
|
|
@ -13,11 +13,8 @@ pub struct Cache {
|
||||||
entries: FxHashMap<KeyHash, Entry>,
|
entries: FxHashMap<KeyHash, Entry>,
|
||||||
aliases: FxHashMap<KeyHash, KeyHash>,
|
aliases: FxHashMap<KeyHash, KeyHash>,
|
||||||
recently_used: FxHashSet<KeyHash>,
|
recently_used: FxHashSet<KeyHash>,
|
||||||
hasher: HashBuilder,
|
|
||||||
}
|
}
|
||||||
|
|
||||||
type HashBuilder = xxhash_rust::xxh3::Xxh3Builder;
|
|
||||||
|
|
||||||
impl Cache {
|
impl Cache {
|
||||||
/// Creates a new empty [`Cache`].
|
/// Creates a new empty [`Cache`].
|
||||||
pub fn new() -> Self {
|
pub fn new() -> Self {
|
||||||
|
|
@ -35,7 +32,7 @@ impl Cache {
|
||||||
font_system: &mut cosmic_text::FontSystem,
|
font_system: &mut cosmic_text::FontSystem,
|
||||||
key: Key<'_>,
|
key: Key<'_>,
|
||||||
) -> (KeyHash, &mut Entry) {
|
) -> (KeyHash, &mut Entry) {
|
||||||
let hash = key.hash(self.hasher.build_hasher());
|
let hash = key.hash(FxHasher::default());
|
||||||
|
|
||||||
if let Some(hash) = self.aliases.get(&hash) {
|
if let Some(hash) = self.aliases.get(&hash) {
|
||||||
let _ = self.recently_used.insert(*hash);
|
let _ = self.recently_used.insert(*hash);
|
||||||
|
|
@ -77,7 +74,7 @@ impl Cache {
|
||||||
] {
|
] {
|
||||||
if key.bounds != bounds {
|
if key.bounds != bounds {
|
||||||
let _ = self.aliases.insert(
|
let _ = self.aliases.insert(
|
||||||
Key { bounds, ..key }.hash(self.hasher.build_hasher()),
|
Key { bounds, ..key }.hash(FxHasher::default()),
|
||||||
hash,
|
hash,
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -25,7 +25,6 @@ log.workspace = true
|
||||||
rustc-hash.workspace = true
|
rustc-hash.workspace = true
|
||||||
softbuffer.workspace = true
|
softbuffer.workspace = true
|
||||||
tiny-skia.workspace = true
|
tiny-skia.workspace = true
|
||||||
xxhash-rust.workspace = true
|
|
||||||
|
|
||||||
resvg.workspace = true
|
resvg.workspace = true
|
||||||
resvg.optional = true
|
resvg.optional = true
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue