@@ -590,13 +590,13 @@ impl<T: Idx> SparseBitSet<T> {
590
590
591
591
fn contains ( & self , elem : T ) -> bool {
592
592
assert ! ( elem. index( ) < self . domain_size) ;
593
- self . elems . contains ( & elem)
593
+ self . elems . iter ( ) . any ( |e| elem. index ( ) == e . index ( ) )
594
594
}
595
595
596
596
fn insert ( & mut self , elem : T ) -> bool {
597
597
assert ! ( elem. index( ) < self . domain_size) ;
598
- let changed = if let Some ( i) = self . elems . iter ( ) . position ( |& e| e >= elem) {
599
- if self . elems [ i] == elem {
598
+ let changed = if let Some ( i) = self . elems . iter ( ) . position ( |& e| e. index ( ) >= elem. index ( ) ) {
599
+ if self . elems [ i] . index ( ) == elem. index ( ) {
600
600
// `elem` is already in the set.
601
601
false
602
602
} else {
@@ -615,7 +615,7 @@ impl<T: Idx> SparseBitSet<T> {
615
615
616
616
fn remove ( & mut self , elem : T ) -> bool {
617
617
assert ! ( elem. index( ) < self . domain_size) ;
618
- if let Some ( i) = self . elems . iter ( ) . position ( |& e| e == elem) {
618
+ if let Some ( i) = self . elems . iter ( ) . position ( |& e| e. index ( ) == elem. index ( ) ) {
619
619
self . elems . remove ( i) ;
620
620
true
621
621
} else {
@@ -1121,7 +1121,7 @@ impl<R: Idx, C: Idx> SparseBitMatrix<R, C> {
1121
1121
/// `write` can reach everything that `read` can (and
1122
1122
/// potentially more).
1123
1123
pub fn union_rows ( & mut self , read : R , write : R ) -> bool {
1124
- if read == write || self . row ( read) . is_none ( ) {
1124
+ if read. index ( ) == write. index ( ) || self . row ( read) . is_none ( ) {
1125
1125
return false ;
1126
1126
}
1127
1127
0 commit comments