3 unstable releases
0.2.0 | Feb 14, 2024 |
---|---|
0.1.2 | Oct 8, 2022 |
0.1.1 | Oct 4, 2022 |
0.1.0 |
|
#130 in Caching
9,260 downloads per month
22KB
348 lines
CachedHash
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.
License
Licensed under either of
- Apache License, Version 2.0, (LICENSE-APACHE or http://www.apache.org/licenses/LICENSE-2.0)
- MIT license (LICENSE-MIT or http://opensource.org/licenses/MIT)
at your option.
Contribution
Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in the work by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without any additional terms or conditions.