Expand description
A hash-set analogue that does not own its data.
It can be used to “mark” items without the need to transfer ownership to the map
§Example use case
/// Process arguments while ignoring duplicates
fn process_args(args: impl IntoIterator<Item=String>) {
let mut same= HashRefSet::new();
for argument in args.into_iter()
{
if !same.insert(argument.as_str()) {
// Already processed this input, ignore
continue;
}
//do work...
}
}
§Serialisation support with serde
crate
HashRefSet
and HashType
both implement Serialize
and Deserialize
from the serde
crate if the serde
feature is enabled. By default it is not.
§Drawbacks
Since the item is not inserted itself, we cannot use Eq
to double check there was not a hash collision.
While the hashing algorithm used (Sha512) is extremely unlikely to produce collisions, especially for small data types, keep in mind that it is not infallible.
Structs§
- Hash
RefSet - A hash-set of references to an item.
Type Aliases§
- Hash
Type - The type used to store the hash of each item.