diff options
Diffstat (limited to 'src/libstd/hash/mod.rs')
| -rw-r--r-- | src/libstd/hash/mod.rs | 13 |
1 files changed, 12 insertions, 1 deletions
diff --git a/src/libstd/hash/mod.rs b/src/libstd/hash/mod.rs index 010ddbaa942..c8207a4c37c 100644 --- a/src/libstd/hash/mod.rs +++ b/src/libstd/hash/mod.rs @@ -70,8 +70,9 @@ use iter::Iterator; use option::{Option, Some, None}; use owned::Box; use rc::Rc; -use str::{Str, StrSlice}; +use result::{Result, Ok, Err}; use slice::{Vector, ImmutableVector}; +use str::{Str, StrSlice}; use vec::Vec; /// Reexport the `sip::hash` function as our default hasher. @@ -292,6 +293,16 @@ impl<S: Writer> Hash<S> for TypeId { } } +impl<S: Writer, T: Hash<S>, U: Hash<S>> Hash<S> for Result<T, U> { + #[inline] + fn hash(&self, state: &mut S) { + match *self { + Ok(ref t) => { 1u.hash(state); t.hash(state); } + Err(ref t) => { 2u.hash(state); t.hash(state); } + } + } +} + ////////////////////////////////////////////////////////////////////////////// #[cfg(test)] |
