From adeb730c7796156bd5fb63d75e13cab655b10ece Mon Sep 17 00:00:00 2001 From: Erick Tryzelaar Date: Wed, 26 Feb 2014 20:46:57 -0800 Subject: [PATCH] std: cut down on the memory usage of `SipHasher` --- src/libstd/hash/sip.rs | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/src/libstd/hash/sip.rs b/src/libstd/hash/sip.rs index 4bc88fbaea26..d1d4d4c90f93 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 for SipHasher { #[inline] fn hash>(&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() }