7 releases
0.7.1 | Jan 21, 2024 |
---|---|
0.7.0 | Jan 7, 2024 |
0.2.1 | Jan 6, 2024 |
0.1.2 | Aug 3, 2023 |
#1189 in Algorithms
10KB
153 lines
FHash
FHash is a simple and lightweight hashing crate designed for flexibility, speed, and usability across various Rust environments. It provides a basic hashing algorithm, FHasher
, along with a RandomState
implementation intended for use in HashMap
and HashSet
structures. It's a direct competitor to AHash
and is 1.3-2.0x faster.
Features
FHasher
- Stupidly Simple: Implements a straightforward hash function, offering basic yet effective hashing capabilities.
- Minimalistic Design: Designed to be lean and efficient, suitable for a wide range of hashing needs without unnecessary complexity.
- Customizable: Provides flexibility by allowing custom seeding for
FHasher
instances.
RandomState
- Enhanced Security: Incorporates randomness into the hashing process, mitigating certain types of hash collision attacks and bolstering security in data structures.
- Easy Integration: Designed for seamless integration with
HashMap
andHashSet
to enhance resilience against potential vulnerabilities in the hash function.
Usage
RandomState with HashMap/HashSet
use hashbrown::HashMap;
use fhash::RandomState;
let mut map: HashMap<i32, &str, RandomState> = HashMap::default();
map.insert(1, "apple");
map.insert(2, "banana");
assert_eq!(map.get(&1), Some(&"apple"));
assert_eq!(map.get(&2), Some(&"banana"));
FHasher
use fhash::FHasher;
let mut hasher = FHasher::default();
hasher.write(b"Hello, world!");
let hash_result = hasher.finish();
Compatibility
no_std
Compatible: Can be used inno_std
environments or scenarios with limited access to the standard library.
Contributing
Contributions to enhance FHash in terms of optimizations, features, or bug fixes are welcome! Please submit issues or pull requests.