From d2beb90a30cb1befa21f090ca7c30736159adef5 Mon Sep 17 00:00:00 2001 From: Robin Freyler Date: Tue, 6 Feb 2024 14:49:50 +0100 Subject: [PATCH] Fix clippy issues, resolve tech debt (#60) * fix clippy issue * remove compat.rs file Use alloc crate dependencies directly instead. * update criterion --- Cargo.toml | 2 +- src/backend/bucket/mod.rs | 4 +++- src/backend/buffer.rs | 3 ++- src/backend/simple.rs | 8 ++------ src/backend/string.rs | 8 ++------ src/compat.rs | 27 --------------------------- src/interner.rs | 11 +++-------- src/lib.rs | 7 +++++-- 8 files changed, 18 insertions(+), 52 deletions(-) delete mode 100644 src/compat.rs diff --git a/Cargo.toml b/Cargo.toml index 7cf031e..0f2127c 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -20,7 +20,7 @@ serde = { version = "1.0", default-features = false, features = ["alloc"], optio [dev-dependencies] serde_json = "1.0" -criterion = "0.3" +criterion = "0.5.1" fxhash = "0.2" [[bench]] diff --git a/src/backend/bucket/mod.rs b/src/backend/bucket/mod.rs index 3e2c074..ed08439 100644 --- a/src/backend/bucket/mod.rs +++ b/src/backend/bucket/mod.rs @@ -5,10 +5,12 @@ mod interned_str; use self::{fixed_str::FixedString, interned_str::InternedStr}; use super::Backend; -use crate::{compat::Vec, symbol::expect_valid_symbol, DefaultSymbol, Symbol}; +use crate::{symbol::expect_valid_symbol, DefaultSymbol, Symbol}; #[cfg(not(feature = "std"))] use alloc::string::String; +use alloc::vec::Vec; use core::{iter::Enumerate, marker::PhantomData, slice}; + /// An interner backend that reduces memory allocations by using string buckets. /// /// # Note diff --git a/src/backend/buffer.rs b/src/backend/buffer.rs index 4429418..6d07a2d 100644 --- a/src/backend/buffer.rs +++ b/src/backend/buffer.rs @@ -1,7 +1,8 @@ #![cfg(feature = "backends")] use super::Backend; -use crate::{compat::Vec, symbol::expect_valid_symbol, DefaultSymbol, Symbol}; +use crate::{symbol::expect_valid_symbol, DefaultSymbol, Symbol}; +use alloc::vec::Vec; use core::{marker::PhantomData, mem, str}; /// An interner backend that appends all interned string information in a single buffer. diff --git a/src/backend/simple.rs b/src/backend/simple.rs index 9db495b..31b316a 100644 --- a/src/backend/simple.rs +++ b/src/backend/simple.rs @@ -1,12 +1,8 @@ #![cfg(feature = "backends")] use super::Backend; -use crate::{ - compat::{Box, ToString, Vec}, - symbol::expect_valid_symbol, - DefaultSymbol, - Symbol, -}; +use crate::{symbol::expect_valid_symbol, DefaultSymbol, Symbol}; +use alloc::{boxed::Box, string::ToString, vec::Vec}; use core::{iter::Enumerate, marker::PhantomData, slice}; /// A simple backend that stores a separate allocation for every interned string. diff --git a/src/backend/string.rs b/src/backend/string.rs index bfa150f..fa1ee68 100644 --- a/src/backend/string.rs +++ b/src/backend/string.rs @@ -1,12 +1,8 @@ #![cfg(feature = "backends")] use super::Backend; -use crate::{ - compat::{String, Vec}, - symbol::expect_valid_symbol, - DefaultSymbol, - Symbol, -}; +use crate::{symbol::expect_valid_symbol, DefaultSymbol, Symbol}; +use alloc::{string::String, vec::Vec}; use core::{iter::Enumerate, marker::PhantomData, slice}; /// An interner backend that accumulates all interned string contents into one string. diff --git a/src/compat.rs b/src/compat.rs deleted file mode 100644 index 54bd7d6..0000000 --- a/src/compat.rs +++ /dev/null @@ -1,27 +0,0 @@ -//! Compatibility layer for `no_std` compilations. - -use cfg_if::cfg_if; - -pub use ::hashbrown::{ - hash_map, - hash_map::{DefaultHashBuilder, HashMap}, -}; - -cfg_if! { - if #[cfg(feature = "std")] { - pub use ::std::{ - vec, - vec::Vec, - string::{String, ToString}, - boxed::Box, - }; - } else { - extern crate alloc; - pub use self::alloc::{ - vec, - vec::Vec, - string::{String, ToString}, - boxed::Box, - }; - } -} diff --git a/src/interner.rs b/src/interner.rs index 89170b8..a4c46bf 100644 --- a/src/interner.rs +++ b/src/interner.rs @@ -1,16 +1,11 @@ -use crate::{ - backend::Backend, - compat::{DefaultHashBuilder, HashMap}, - DefaultBackend, - DefaultSymbol, - Symbol, -}; +use crate::{backend::Backend, DefaultBackend, DefaultSymbol, Symbol}; use core::{ fmt, fmt::{Debug, Formatter}, hash::{BuildHasher, Hash, Hasher}, iter::FromIterator, }; +use hashbrown::{hash_map::DefaultHashBuilder, HashMap}; /// Creates the `u64` hash value for the given value using the given hash builder. fn make_hash(builder: &impl BuildHasher, value: &T) -> u64 @@ -215,7 +210,7 @@ where // we receive from our backend making them valid. string == unsafe { backend.resolve_unchecked(*symbol) } }); - use crate::compat::hash_map::RawEntryMut; + use hashbrown::hash_map::RawEntryMut; let (&mut symbol, &mut ()) = match entry { RawEntryMut::Occupied(occupied) => occupied.into_key_value(), RawEntryMut::Vacant(vacant) => { diff --git a/src/lib.rs b/src/lib.rs index 7306e6d..86930a4 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -122,20 +122,23 @@ //! Never use this one for real use cases! #[cfg(not(feature = "std"))] +#[macro_use] extern crate alloc; +#[cfg(feature = "std")] +extern crate std as alloc; #[cfg(feature = "serde-1")] mod serde_impl; pub mod backend; -mod compat; mod interner; pub mod symbol; #[doc(inline)] pub use self::{ backend::DefaultBackend, - compat::DefaultHashBuilder, interner::StringInterner, symbol::{DefaultSymbol, Symbol}, }; +#[doc(inline)] +pub use hashbrown::hash_map::DefaultHashBuilder;