All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog and this project adheres to Semantic Versioning.
RawTable::clone_from. (#348)Entry API for HashSet. (#342)Extend<&'a (K, V)> for HashMap<K, V, S, A>. (#340)RawTable of a HashMap. (#335)do_alloc to reduce LLVM IR generated. (#341)RawIterRange::size_hint. (#325)Debug for ValuesMut and IntoValues. (#325)From<[T; N]> and From<[(K, V); N]> for HashSet and HashMap respectively. (#297)allocator() getter to HashMap and HashSet. (#257)insert_unique_unchecked to HashMap and HashSet. (#293)into_keys and into_values to HashMap. (#295)From<array> on HashSet and HashMap. (#298)entry_ref API to HashMap. (#201)find. (#279)BuildHasher::hash_one when feature = "nightly" is enabled. (#292)Debug for HashSet. (#296)get_each_mut to get_many_mut and align API with the stdlib. (#291)RawTable::insert_no_grow unsafe. (#254)static_empty. (#280)HashMap's and HashSet's Clone impls. (#252)pub modifier to BumpWrapper. (#251)try_insert_no_grow method to RawTable. (#229)bumpalo as an allocator without the nightly feature. (#231)Default for RawTable. (#237)RawTable::get_each_mut, HashMap::get_each_mut, and HashMap::get_each_key_value_mut. (#239)From<HashMap<T, ()>> for HashSet<T>. (#235)try_insert method to HashMap. (#247)aHash, which was resulting in inconsistent hashes being generated for a key. (#248)This release was yanked due to inconsistent hashes being generated with the nightly feature. (#248)
RawTable, HashSet and HashMap over an allocator. (#133)RawTable's reserve functions once per key-value. (#204)RawTable (#202):get: find and as_refget_mut: find and as_mutinsert_entry: insert and as_mutremove_entry: find and removeerase_entry: find and erasefrom_key_hashed_nocheck's Q: Hash. (#200)RawTable::drain safe. (#201)drain_filter now removes and yields items that do match the predicate, rather than items that don't. This is a breaking change to match the behavior of the drain_filter methods in std. (#187)replace_entry_with to OccupiedEntry, and and_replace_entry_with to Entry. (#190)FusedIterator and size_hint for DrainFilter. (#188)crossbeam dependency). (#193)ahash dependency to 0.4. (#198)HashMap::with_hasher and HashSet::with_hasher are now const fn. (#195)T: Hash + Eq and S: BuildHasher bounds on HashSet::new, with_capacity, with_hasher, and with_capacity_and_hasher. (#185)erase and remove to RawTable. (#171)try_with_capacity to RawTable. (#174)RawIter for RawDrain, RawIntoIter, and RawParIter. (#175)reflect_remove and reflect_insert to RawIter. (#175)drain_filter function to HashSet. (#179)RawTable::erase_no_drop in favor of erase and remove. (#176)insert_no_grow is now exposed under the "raw" feature. (#180)RawTable::par_iter as unsafe. (#157)HashMap. (#159)K: Eq + Hash bounds on retain. (#163)HashMap changes from rust-lang/rust (#164):extend_one support on nightly.CollectionAllocErr renamed to TryReserveError.HashSet::get_or_insert_owned.Default for HashSet no longer requires T: Eq + Hash and S: BuildHasher.or_insert_with_key to Entry. (#152)Clone optimization which was unsound. (#154)const-random by default, which prevented reproducible builds. (#155)repeat function. (#150)NonNull for buckets, which improves codegen for iterators. (#148)HashMap::get_key_value_mut. (#145)Clone implementation. (#146)drain_filter function to HashMap. (#135)ahash dependency to 0.3. (#141)raw_entry can now be used without requiring S: BuildHasher. (#123)RawTable::bucket_index can now be used under the raw feature. (#128)ahash-compile-time-rng feature (enabled by default) which allows disabling the compile-time-rng feature in ahash to work around a Cargo bug. (#125)inline-more feature (enabled by default) which allows choosing a tradeoff between runtime performance and compilation time. (#119)Entry::insert and RawEntryMut::insert. (#118)Group::static_empty was changed from a const to a static (#116).std. (#110)rand dependency).This release was yanked due to a breaking change for users of no-default-features.
RawTable API is available under the “raw” feature. (#108)HashSet. (#98)hashbrown is now fully no_std on recent Rust versions (1.36+). (#96)RawOccupiedEntryMut now properly implements Send and Sync. (#100)lazy_static version. (#92)Send trait bounds on IterMut not matching the libstd one. (#82)insert_with_hasher to the raw_entry API to allow K: !(Hash + Eq). (#54)#[may_dangle] attributes to match the libstd HashMap. (#46)raw_entry support (#31)#[may_dangle] on nightly (#31)try_reserve support (#31)IterMut. (#31)erase_no_drop implementation. (#26)clear segfaults when called on an empty table. (#13)erase_no_drop optimization not triggering in the SSE2 implementation. (#3)Send and Sync for hash map and iterator types. (#7)