@@ -67,6 +67,7 @@ use core::cmp;
67
67
use core:: default:: Default ;
68
68
use core:: fmt;
69
69
use core:: iter:: Take ;
70
+ use core:: iter;
70
71
use core:: ops:: Index ;
71
72
use core:: slice;
72
73
use core:: uint;
@@ -830,6 +831,13 @@ impl Clone for Bitv {
830
831
}
831
832
}
832
833
834
+ impl PartialOrd for Bitv {
835
+ #[ inline]
836
+ fn partial_cmp ( & self , other : & Bitv ) -> Option < Ordering > {
837
+ iter:: order:: partial_cmp ( self . iter ( ) , other. iter ( ) )
838
+ }
839
+ }
840
+
833
841
impl fmt:: Show for Bitv {
834
842
fn fmt ( & self , fmt : & mut fmt:: Formatter ) -> fmt:: Result {
835
843
for bit in self . iter ( ) {
@@ -955,7 +963,7 @@ impl<'a> RandomAccessIterator<bool> for Bits<'a> {
955
963
/// assert!(bv.eq_vec([true, true, false, true,
956
964
/// false, false, false, false]));
957
965
/// ```
958
- #[ deriving( Clone , PartialEq , Eq ) ]
966
+ #[ deriving( Clone , PartialEq , Eq , PartialOrd ) ]
959
967
pub struct BitvSet ( Bitv ) ;
960
968
961
969
impl Default for BitvSet {
@@ -2189,6 +2197,37 @@ mod tests {
2189
2197
assert_eq ! ( a. capacity( ) , uint:: BITS ) ;
2190
2198
}
2191
2199
2200
+ #[ test]
2201
+ fn test_bitv_lt ( ) {
2202
+ let mut a = Bitv :: with_capacity ( 5 u, false ) ;
2203
+ let mut b = Bitv :: with_capacity ( 5 u, false ) ;
2204
+
2205
+ assert ! ( !( a < b) && !( b < a) ) ;
2206
+ b. set ( 2 , true ) ;
2207
+ assert ! ( a < b) ;
2208
+ a. set ( 3 , true ) ;
2209
+ assert ! ( a < b) ;
2210
+ a. set ( 2 , true ) ;
2211
+ assert ! ( !( a < b) && b < a) ;
2212
+ b. set ( 0 , true ) ;
2213
+ assert ! ( a < b) ;
2214
+ }
2215
+
2216
+ #[ test]
2217
+ fn test_ord ( ) {
2218
+ let mut a = Bitv :: with_capacity ( 5 u, false ) ;
2219
+ let mut b = Bitv :: with_capacity ( 5 u, false ) ;
2220
+
2221
+ assert ! ( a <= b && a >= b) ;
2222
+ a. set ( 1 , true ) ;
2223
+ assert ! ( a > b && a >= b) ;
2224
+ assert ! ( b < a && b <= a) ;
2225
+ b. set ( 1 , true ) ;
2226
+ b. set ( 2 , true ) ;
2227
+ assert ! ( b > a && b >= a) ;
2228
+ assert ! ( a < b && a <= b) ;
2229
+ }
2230
+
2192
2231
#[ test]
2193
2232
fn test_bitv_clone ( ) {
2194
2233
let mut a = BitvSet :: new ( ) ;
0 commit comments