Skip to content

Commit e80fc6c

Browse files
ericktgraydon
authored andcommitted
---
yaml --- r: 35469 b: refs/heads/master c: 3657d56 h: refs/heads/master i: 35467: 5e6d4ee v: v3
1 parent c101f75 commit e80fc6c

File tree

2 files changed

+38
-1
lines changed

2 files changed

+38
-1
lines changed

[refs]

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
---
2-
refs/heads/master: 645bd98b602500ef910685eeeb899df298221e35
2+
refs/heads/master: 3657d5606d7ea5607a0670341a57c3ef20202ea0
33
refs/heads/snap-stage1: e33de59e47c5076a89eadeb38f4934f58a3618a6
44
refs/heads/snap-stage3: eb8fd119c65c67f3b1b8268cc7341c22d39b7b61
55
refs/heads/try: d324a424d8f84b1eb049b12cf34182bda91b0024

trunk/src/libcore/send_map.rs

Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -428,6 +428,25 @@ pub mod linear {
428428
option::unwrap(move value)
429429
}
430430
}
431+
432+
impl<K:Hash IterBytes Eq, V: Eq> LinearMap<K, V>: cmp::Eq {
433+
pure fn eq(&self, other: &LinearMap<K, V>) -> bool {
434+
if self.len() != other.len() { return false; }
435+
436+
for self.each |key, value| {
437+
match other.find_ref(key) {
438+
None => return false,
439+
Some(v) => if value != v { return false },
440+
}
441+
}
442+
443+
return true;
444+
}
445+
446+
pure fn ne(&self, other: &LinearMap<K, V>) -> bool {
447+
!self.eq(other)
448+
}
449+
}
431450
}
432451

433452
#[test]
@@ -538,4 +557,22 @@ pub mod test {
538557
Some(v) => assert *v == 2
539558
}
540559
}
560+
561+
#[test]
562+
pub fn test_eq() {
563+
let mut m1 = ~LinearMap();
564+
m1.insert(1, 2);
565+
m1.insert(2, 3);
566+
m1.insert(3, 4);
567+
568+
let mut m2 = ~LinearMap();
569+
m2.insert(1, 2);
570+
m2.insert(2, 3);
571+
572+
assert m1 != m2;
573+
574+
m2.insert(3, 4);
575+
576+
assert m1 == m2;
577+
}
541578
}

0 commit comments

Comments
 (0)