Crate cachedhash
source ·Expand description
For a type T
, CachedHash<T>
wraps T
and
implements Hash
in a way that
caches T
’s hash value. This is useful when T
is expensive to hash (for
example if it contains a large vector) and you need to hash it multiple times
with few modifications (for example by moving it between multiple
HashSet
s).
Stored hash is invalidated whenever the stored value is accessed mutably (via
DerefMut
,
AsMut
,
BorrowMut
or explicitly via a provided associated function).
In order for the hash to be invalidated correctly the stored type cannot use
interior mutability in a way that affects the hash. If this is the case, you
can use CachedHash::invalidate_hash
to invalidate the hash manually.
Structs§
- For a type
T
,CachedHash
wrapsT
and implementsHash
in a way that cachesT
’s hash value. The first time the hash is computed, it is stored and returned on subsequent calls. When the stored value is accessed mutably the hash is invalidated and needs to be recomputed again.CachedHash
implementsDeref
andDerefMut
so it can be used as a drop-in replacement forT
.