@@ -18,6 +18,7 @@ static INITIAL_CAPACITY: uint = 8u; // 2^3
18
18
static MINIMUM_CAPACITY : uint = 2 u;
19
19
20
20
#[ allow( missing_doc) ]
21
+ #[ deriving( Clone ) ]
21
22
pub struct Deque < T > {
22
23
priv nelts : uint ,
23
24
priv lo: uint ,
@@ -272,6 +273,16 @@ fn raw_index(lo: uint, len: uint, index: uint) -> uint {
272
273
}
273
274
}
274
275
276
+ impl < A : Eq > Eq for Deque < A > {
277
+ fn eq ( & self , other : & Deque < A > ) -> bool {
278
+ self . nelts == other. nelts &&
279
+ self . iter ( ) . zip ( other. iter ( ) ) . all ( |( a, b) | a. eq ( b) )
280
+ }
281
+ fn ne ( & self , other : & Deque < A > ) -> bool {
282
+ !self . eq ( other)
283
+ }
284
+ }
285
+
275
286
impl < A , T : Iterator < A > > FromIterator < A , T > for Deque < A > {
276
287
fn from_iterator ( iterator : & mut T ) -> Deque < A > {
277
288
let mut deq = Deque :: new ( ) ;
@@ -631,4 +642,42 @@ mod tests {
631
642
}
632
643
assert_eq ! ( deq. len( ) , 256 ) ;
633
644
}
645
+
646
+ #[ test]
647
+ fn test_clone ( ) {
648
+ let mut d = Deque : : new( ) ;
649
+ d. add_front( 17 ) ;
650
+ d. add_front( 42 ) ;
651
+ d. add_back( 137 ) ;
652
+ d. add_back( 137 ) ;
653
+ assert_eq ! ( d. len( ) , 4 u) ;
654
+ let mut e = d. clone( ) ;
655
+ assert_eq ! ( e. len( ) , 4 u) ;
656
+ while !d. is_empty( ) {
657
+ assert_eq ! ( d. pop_back( ) , e. pop_back( ) ) ;
658
+ }
659
+ assert_eq ! ( d. len( ) , 0 u) ;
660
+ assert_eq ! ( e. len( ) , 0 u) ;
661
+ }
662
+
663
+ #[ test]
664
+ fn test_eq ( ) {
665
+ let mut d = Deque : : new( ) ;
666
+ assert_eq ! ( & d, & Deque :: with_capacity( 0 ) ) ;
667
+ d. add_front( 137 ) ;
668
+ d. add_front( 17 ) ;
669
+ d. add_front( 42 ) ;
670
+ d. add_back( 137 ) ;
671
+ let mut e = Deque :: with_capacity( 0 ) ;
672
+ e. add_back( 42 ) ;
673
+ e. add_back( 17 ) ;
674
+ e. add_back( 137 ) ;
675
+ e. add_back( 137 ) ;
676
+ assert_eq ! ( & e, & d) ;
677
+ e. pop_back( ) ;
678
+ e. add_back( 0 ) ;
679
+ assert ! ( e != d) ;
680
+ e. clear( ) ;
681
+ assert_eq ! ( e, Deque :: new( ) ) ;
682
+ }
634
683
}
0 commit comments