diff --git a/packages/core/Cargo.toml b/packages/core/Cargo.toml index 05ef482b1..08d6cf085 100644 --- a/packages/core/Cargo.toml +++ b/packages/core/Cargo.toml @@ -18,7 +18,7 @@ keywords = ["dom", "ui", "gui", "react", "wasm"] bumpalo = { version = "3.6", features = ["collections", "boxed"] } # faster hashmaps -fxhash = "0.2" +rustc-hash = "1.1.0" # Used in diffing longest-increasing-subsequence = "0.1.0" diff --git a/packages/core/src/diff.rs b/packages/core/src/diff.rs index 668c238b7..1b82fe04a 100644 --- a/packages/core/src/diff.rs +++ b/packages/core/src/diff.rs @@ -104,7 +104,7 @@ use crate::{ Attribute, TemplateAttributeValue, }; use bumpalo::Bump; -use fxhash::{FxHashMap, FxHashSet}; +use rustc_hash::{FxHashMap, FxHashSet}; use smallvec::{smallvec, SmallVec}; pub(crate) struct DiffState<'bump> { @@ -886,7 +886,7 @@ impl<'b> DiffState<'b> { // The stack is empty upon entry. fn diff_keyed_children(&mut self, old: &'b [VNode<'b>], new: &'b [VNode<'b>]) { if cfg!(debug_assertions) { - let mut keys = fxhash::FxHashSet::default(); + let mut keys = rustc_hash::FxHashSet::default(); let mut assert_unique_keys = |children: &'b [VNode<'b>]| { keys.clear(); for child in children { diff --git a/packages/core/src/mutations.rs b/packages/core/src/mutations.rs index 324ec1035..6151a38e7 100644 --- a/packages/core/src/mutations.rs +++ b/packages/core/src/mutations.rs @@ -276,7 +276,7 @@ pub enum DomEdit<'bump> { }, } -use fxhash::FxHashSet; +use rustc_hash::FxHashSet; use DomEdit::*; impl<'a> Mutations<'a> { diff --git a/packages/core/src/scopes.rs b/packages/core/src/scopes.rs index 474335dcc..6078b22e3 100644 --- a/packages/core/src/scopes.rs +++ b/packages/core/src/scopes.rs @@ -9,7 +9,7 @@ use crate::{ }; use bumpalo::Bump; use futures_channel::mpsc::UnboundedSender; -use fxhash::FxHashMap; +use rustc_hash::FxHashMap; use slab::Slab; use std::{ any::{Any, TypeId}, diff --git a/packages/core/src/template.rs b/packages/core/src/template.rs index 819d80ac8..fd12164f7 100644 --- a/packages/core/src/template.rs +++ b/packages/core/src/template.rs @@ -60,7 +60,7 @@ /// The maxiumum integer in JS pub const JS_MAX_INT: u64 = 9007199254740991; -use fxhash::FxHashMap; +use rustc_hash::FxHashMap; use std::{cell::Cell, hash::Hash, marker::PhantomData, ops::Index}; use bumpalo::Bump; diff --git a/packages/core/src/util.rs b/packages/core/src/util.rs index 03ec9bdce..30f1f73d3 100644 --- a/packages/core/src/util.rs +++ b/packages/core/src/util.rs @@ -90,8 +90,8 @@ impl<'a> Iterator for ElementIdIterator<'a> { mod leaky { use std::sync::Mutex; - use fxhash::FxHashSet; use once_cell::sync::Lazy; + use rustc_hash::FxHashSet; static STATIC_CACHE: Lazy>> = Lazy::new(|| Mutex::new(FxHashSet::default())); diff --git a/packages/core/src/virtual_dom.rs b/packages/core/src/virtual_dom.rs index 77195cb93..85cd44cf4 100644 --- a/packages/core/src/virtual_dom.rs +++ b/packages/core/src/virtual_dom.rs @@ -6,8 +6,8 @@ use crate::diff::DiffState; use crate::innerlude::*; use futures_channel::mpsc::{UnboundedReceiver, UnboundedSender}; use futures_util::{future::poll_fn, StreamExt}; -use fxhash::FxHashSet; use indexmap::IndexSet; +use rustc_hash::FxHashSet; use std::{collections::VecDeque, iter::FromIterator, task::Poll}; /// A virtual node system that progresses user events and diffs UI trees. diff --git a/packages/native-core-macro/Cargo.toml b/packages/native-core-macro/Cargo.toml index f847b84be..bff83ec42 100644 --- a/packages/native-core-macro/Cargo.toml +++ b/packages/native-core-macro/Cargo.toml @@ -23,5 +23,5 @@ dioxus-native-core = { path = "../native-core", version = "^0.2.0" } dioxus = { path = "../dioxus" } smallvec = "1.6" -fxhash = "0.2" +rustc-hash = "1.1.0" anymap = "0.12.1" diff --git a/packages/native-core-macro/src/lib.rs b/packages/native-core-macro/src/lib.rs index 921b9957b..dd1eb8dad 100644 --- a/packages/native-core-macro/src/lib.rs +++ b/packages/native-core-macro/src/lib.rs @@ -169,7 +169,7 @@ fn impl_derive_macro(ast: &syn::DeriveInput) -> TokenStream { state_tree: &'a mut T, rdom: &'a T2, ctx: &anymap::AnyMap, - ) -> fxhash::FxHashSet{ + ) -> rustc_hash::FxHashSet{ #[derive(Eq, PartialEq)] struct HeightOrdering { height: u16, @@ -236,9 +236,9 @@ fn impl_derive_macro(ast: &syn::DeriveInput) -> TokenStream { } } - let mut dirty_elements = fxhash::FxHashSet::default(); + let mut dirty_elements = rustc_hash::FxHashSet::default(); // the states of any elements that are dirty - let mut states: fxhash::FxHashMap = fxhash::FxHashMap::default(); + let mut states: rustc_hash::FxHashMap = rustc_hash::FxHashMap::default(); for (id, mask) in dirty { let members_dirty = MembersDirty { diff --git a/packages/native-core-macro/tests/update_state.rs b/packages/native-core-macro/tests/update_state.rs index 71dbcf511..4f0d18b29 100644 --- a/packages/native-core-macro/tests/update_state.rs +++ b/packages/native-core-macro/tests/update_state.rs @@ -318,7 +318,7 @@ fn state_reduce_parent_called_minimally_on_update() { value: AttributeValue::Text("99%"), ns: Some("style"), }], - dirty_scopes: fxhash::FxHashSet::default(), + dirty_scopes: rustc_hash::FxHashSet::default(), refs: Vec::new(), }]); let _to_rerender = dom.update_state(nodes_updated, AnyMap::new()); @@ -387,7 +387,7 @@ fn state_reduce_child_called_minimally_on_update() { value: AttributeValue::Text("99%"), ns: Some("style"), }], - dirty_scopes: fxhash::FxHashSet::default(), + dirty_scopes: rustc_hash::FxHashSet::default(), refs: Vec::new(), }]); let _to_rerender = dom.update_state(nodes_updated, AnyMap::new()); diff --git a/packages/native-core/Cargo.toml b/packages/native-core/Cargo.toml index 1c54e0711..c9f050741 100644 --- a/packages/native-core/Cargo.toml +++ b/packages/native-core/Cargo.toml @@ -17,7 +17,7 @@ dioxus-core-macro = { path = "../core-macro", version = "^0.2.1" } taffy = "0.1.0" smallvec = "1.6" -fxhash = "0.2" +rustc-hash = "1.1.0" anymap = "0.12.1" [dev-dependencies] diff --git a/packages/native-core/src/real_dom.rs b/packages/native-core/src/real_dom.rs index 99620558d..e5dae0da1 100644 --- a/packages/native-core/src/real_dom.rs +++ b/packages/native-core/src/real_dom.rs @@ -1,5 +1,5 @@ use anymap::AnyMap; -use fxhash::{FxHashMap, FxHashSet}; +use rustc_hash::{FxHashMap, FxHashSet}; use std::ops::{Index, IndexMut}; use dioxus_core::{ diff --git a/packages/native-core/src/state.rs b/packages/native-core/src/state.rs index cb119c282..e0132872a 100644 --- a/packages/native-core/src/state.rs +++ b/packages/native-core/src/state.rs @@ -2,7 +2,7 @@ use std::{cmp::Ordering, fmt::Debug}; use anymap::AnyMap; use dioxus_core::GlobalNodeId; -use fxhash::FxHashSet; +use rustc_hash::FxHashSet; use crate::node_ref::{NodeMask, NodeView}; use crate::real_dom::NodeData; diff --git a/packages/tui/Cargo.toml b/packages/tui/Cargo.toml index 0e8533577..10f005bbc 100644 --- a/packages/tui/Cargo.toml +++ b/packages/tui/Cargo.toml @@ -25,7 +25,7 @@ tokio = { version = "1.15.0", features = ["full"] } futures = "0.3.19" taffy = "0.1.0" smallvec = "1.6" -fxhash = "0.2" +rustc-hash = "1.1.0" anymap = "0.12.1" [dev-dependencies] diff --git a/packages/tui/src/hooks.rs b/packages/tui/src/hooks.rs index c2045664f..7fbc84257 100644 --- a/packages/tui/src/hooks.rs +++ b/packages/tui/src/hooks.rs @@ -2,7 +2,7 @@ use crossterm::event::{ Event as TermEvent, KeyCode as TermKeyCode, KeyModifiers, MouseButton, MouseEventKind, }; use dioxus_core::*; -use fxhash::{FxHashMap, FxHashSet}; +use rustc_hash::{FxHashMap, FxHashSet}; use dioxus_html::geometry::euclid::{Point2D, Rect, Size2D}; use dioxus_html::geometry::{ diff --git a/packages/tui/src/lib.rs b/packages/tui/src/lib.rs index 9c3dbbed2..7208bd20f 100644 --- a/packages/tui/src/lib.rs +++ b/packages/tui/src/lib.rs @@ -133,7 +133,7 @@ fn render_vdom( terminal.clear().unwrap(); } - let mut to_rerender: fxhash::FxHashSet = + let mut to_rerender: rustc_hash::FxHashSet = vec![GlobalNodeId::VNodeId(ElementId(0))] .into_iter() .collect(); diff --git a/packages/web/Cargo.toml b/packages/web/Cargo.toml index d20ed5ec8..2f35d0323 100644 --- a/packages/web/Cargo.toml +++ b/packages/web/Cargo.toml @@ -21,7 +21,7 @@ js-sys = "0.3.56" wasm-bindgen = { version = "0.2.79", features = ["enable-interning"] } wasm-bindgen-futures = "0.4.29" log = { version = "0.4.14" } -fxhash = "0.2.1" +rustc-hash = "1.1.0" console_error_panic_hook = { version = "0.1.7", optional = true } once_cell = "1.9.0" anyhow = "1.0.53" diff --git a/packages/web/src/olddom.rs b/packages/web/src/olddom.rs index 5e5032773..e07d7478f 100644 --- a/packages/web/src/olddom.rs +++ b/packages/web/src/olddom.rs @@ -8,7 +8,7 @@ //! - Partial delegation?> use dioxus_core::{DomEdit, ElementId, SchedulerMsg, ScopeId, UserEvent}; -use fxhash::FxHashMap; +use rustc_hash::FxHashMap; use std::{any::Any, fmt::Debug, rc::Rc, sync::Arc}; use wasm_bindgen::{closure::Closure, JsCast}; use web_sys::{