diff options
| author | Erick Tryzelaar <erick.tryzelaar@gmail.com> | 2014-02-26 20:46:57 -0800 |
|---|---|---|
| committer | Erick Tryzelaar <erick.tryzelaar@gmail.com> | 2014-02-27 20:41:00 -0800 |
| commit | adeb730c7796156bd5fb63d75e13cab655b10ece (patch) | |
| tree | a6f6ec6dbf3da954f3e2fb634b4fb005ac5d7767 /src/libstd/hash | |
| parent | 72b5e30f6cd99f27510cb48f8882f25b31ed9d8b (diff) | |
| download | rust-adeb730c7796156bd5fb63d75e13cab655b10ece.tar.gz rust-adeb730c7796156bd5fb63d75e13cab655b10ece.zip | |
std: cut down on the memory usage of `SipHasher`
Diffstat (limited to 'src/libstd/hash')
| -rw-r--r-- | src/libstd/hash/sip.rs | 12 |
1 files changed, 6 insertions, 6 deletions
diff --git a/src/libstd/hash/sip.rs b/src/libstd/hash/sip.rs index 4bc88fbaea2..d1d4d4c90f9 100644 --- a/src/libstd/hash/sip.rs +++ b/src/libstd/hash/sip.rs @@ -231,23 +231,23 @@ impl Default for SipState { /// `SipHasher` computes the SipHash algorithm from a stream of bytes. #[deriving(Clone)] pub struct SipHasher { - priv state: SipState, + priv k0: u64, + priv k1: u64, } impl SipHasher { /// Create a `Sip`. #[inline] pub fn new() -> SipHasher { - SipHasher { - state: SipState::new(), - } + SipHasher::new_with_keys(0, 0) } /// Create a `Sip` that is keyed off the provided keys. #[inline] pub fn new_with_keys(key0: u64, key1: u64) -> SipHasher { SipHasher { - state: SipState::new_with_keys(key0, key1), + k0: key0, + k1: key1, } } } @@ -255,7 +255,7 @@ impl SipHasher { impl Hasher<SipState> for SipHasher { #[inline] fn hash<T: Hash<SipState>>(&self, value: &T) -> u64 { - let mut state = self.state.clone(); + let mut state = SipState::new_with_keys(self.k0, self.k1); value.hash(&mut state); state.result() } |
