Skip to content

Commit 2d93495

Browse files
nhamalexcrichton
authored andcommitted
---
yaml --- r: 126948 b: refs/heads/snap-stage3 c: f7bcb73 h: refs/heads/master v: v3
1 parent 5003d9d commit 2d93495

File tree

2 files changed

+30
-1
lines changed

2 files changed

+30
-1
lines changed

[refs]

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
---
22
refs/heads/master: 7be8f0af0393dcdb077c2f6b1653836fd3fba235
33
refs/heads/snap-stage1: e33de59e47c5076a89eadeb38f4934f58a3618a6
4-
refs/heads/snap-stage3: 3c453b36ce371da1339883f5e0157c5c13e7f9fd
4+
refs/heads/snap-stage3: f7bcb736ad3a43a707aa915920b309e6bb13856b
55
refs/heads/try: 502e4c045236682e9728539dc0d2b3d0b237f55c
66
refs/tags/release-0.1: 1f5c5126e96c79d22cb7862f75304136e204f105
77
refs/heads/ndm: f3868061cd7988080c30d6d5bf352a5a5fe2460b

branches/snap-stage3/src/libcollections/dlist.rs

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,7 @@ use core::fmt;
2929
use core::iter;
3030
use core::mem;
3131
use core::ptr;
32+
use std::hash::{Writer, Hash};
3233

3334
use {Collection, Mutable, Deque, MutableSeq};
3435

@@ -707,10 +708,20 @@ impl<A: fmt::Show> fmt::Show for DList<A> {
707708
}
708709
}
709710

711+
impl<S: Writer, A: Hash<S>> Hash<S> for DList<A> {
712+
fn hash(&self, state: &mut S) {
713+
self.len().hash(state);
714+
for elt in self.iter() {
715+
elt.hash(state);
716+
}
717+
}
718+
}
719+
710720
#[cfg(test)]
711721
mod tests {
712722
use std::prelude::*;
713723
use std::rand;
724+
use std::hash;
714725
use test::Bencher;
715726
use test;
716727

@@ -1075,6 +1086,24 @@ mod tests {
10751086
assert!(n != m);
10761087
}
10771088

1089+
#[test]
1090+
fn test_hash() {
1091+
let mut x = DList::new();
1092+
let mut y = DList::new();
1093+
1094+
assert!(hash::hash(&x) == hash::hash(&y));
1095+
1096+
x.push_back(1i);
1097+
x.push_back(2);
1098+
x.push_back(3);
1099+
1100+
y.push_front(3i);
1101+
y.push_front(2);
1102+
y.push_front(1);
1103+
1104+
assert!(hash::hash(&x) == hash::hash(&y));
1105+
}
1106+
10781107
#[test]
10791108
fn test_ord() {
10801109
let n: DList<int> = list_from([]);

0 commit comments

Comments
 (0)