]> git.lizzy.rs Git - rust.git/commit
std: rewrite Hash to make it more generic
authorErick Tryzelaar <erick.tryzelaar@gmail.com>
Sat, 22 Feb 2014 05:33:23 +0000 (21:33 -0800)
committerErick Tryzelaar <erick.tryzelaar@gmail.com>
Sat, 22 Feb 2014 05:33:23 +0000 (21:33 -0800)
commitd223dd1e57cc412aa2eff28e6604f86b9f013083
treeaa8d3f01f77b0a74c024d1632df29d5a95f4724e
parent0135b521ad38615e9a07aac54d9c22627af57ca4
std: rewrite Hash to make it more generic

This patch merges IterBytes and Hash traits, which clears up the
confusion of using `#[deriving(IterBytes)]` to support hashing.
Instead, it now is much easier to use the new `#[deriving(Hash)]`
for making a type hashable with a stream hash.

Furthermore, it supports custom non-stream-based hashers, such as
if a value's hash was cached in a database.

This does not yet replace the old IterBytes-hash with this new
version.
26 files changed:
src/etc/generate-deriving-span-tests.py
src/libextra/stats.rs
src/librustc/metadata/decoder.rs
src/librustc/metadata/encoder.rs
src/librustc/middle/ty.rs
src/libserialize/serialize.rs
src/libstd/hash.rs [deleted file]
src/libstd/hash/mod.rs [new file with mode: 0644]
src/libstd/hash/sip.rs [new file with mode: 0644]
src/libstd/hash_old.rs [new file with mode: 0644]
src/libstd/hashmap.rs
src/libstd/lib.rs
src/libstd/prelude.rs
src/libstd/to_str.rs
src/libsyntax/ext/deriving/generic.rs
src/libsyntax/ext/deriving/hash.rs [new file with mode: 0644]
src/libsyntax/ext/deriving/mod.rs
src/libsyntax/util/interner.rs
src/test/compile-fail/deriving-span-Hash-enum-struct-variant.rs [new file with mode: 0644]
src/test/compile-fail/deriving-span-Hash-enum.rs [new file with mode: 0644]
src/test/compile-fail/deriving-span-Hash-struct.rs [new file with mode: 0644]
src/test/compile-fail/deriving-span-Hash-tuple-struct.rs [new file with mode: 0644]
src/test/run-pass/deriving-hash.rs [new file with mode: 0644]
src/test/run-pass/deriving-meta-multiple.rs
src/test/run-pass/deriving-meta.rs
src/test/run-pass/typeid-intrinsic.rs