@@ -980,6 +980,36 @@ fn disjoint_mut_multi_success() {
980
980
) ;
981
981
}
982
982
983
+ #[ test]
984
+ fn disjoint_mut_multi_success_double_ended ( ) {
985
+ let mut map: RingMap < u32 , u32 > = RingMap :: default ( ) ;
986
+ map. push_back ( 2 , 200 ) ;
987
+ map. push_back ( 3 , 300 ) ;
988
+ map. push_back ( 4 , 400 ) ;
989
+ map. push_front ( 1 , 100 ) ;
990
+ {
991
+ let ( head, tail) = map. as_mut_slices ( ) ;
992
+ assert ! ( !head. is_empty( ) && !tail. is_empty( ) ) ;
993
+ }
994
+ assert_eq ! (
995
+ map. get_disjoint_mut( [ & 1 , & 2 ] ) ,
996
+ [ Some ( & mut 100 ) , Some ( & mut 200 ) ]
997
+ ) ;
998
+ assert_eq ! (
999
+ map. get_disjoint_mut( [ & 1 , & 3 ] ) ,
1000
+ [ Some ( & mut 100 ) , Some ( & mut 300 ) ]
1001
+ ) ;
1002
+ assert_eq ! (
1003
+ map. get_disjoint_mut( [ & 3 , & 1 , & 4 , & 2 ] ) ,
1004
+ [
1005
+ Some ( & mut 300 ) ,
1006
+ Some ( & mut 100 ) ,
1007
+ Some ( & mut 400 ) ,
1008
+ Some ( & mut 200 )
1009
+ ]
1010
+ ) ;
1011
+ }
1012
+
983
1013
#[ test]
984
1014
fn disjoint_mut_multi_success_unsized_key ( ) {
985
1015
let mut map: RingMap < & ' static str , u32 > = RingMap :: default ( ) ;
@@ -1091,6 +1121,23 @@ fn disjoint_indices_mut_success() {
1091
1121
) ;
1092
1122
}
1093
1123
1124
+ #[ test]
1125
+ fn disjoint_indices_mut_success_double_ended ( ) {
1126
+ let mut map: RingMap < u32 , u32 > = RingMap :: default ( ) ;
1127
+ map. push_back ( 1 , 10 ) ;
1128
+ map. push_back ( 321 , 20 ) ;
1129
+ map. push_front ( 42 , 0o42 ) ;
1130
+ {
1131
+ let ( head, tail) = map. as_mut_slices ( ) ;
1132
+ assert ! ( !head. is_empty( ) && !tail. is_empty( ) ) ;
1133
+ }
1134
+ assert_eq ! ( map. get_disjoint_indices_mut( [ 1 ] ) , Ok ( [ ( & 1 , & mut 10 ) ] ) ) ;
1135
+ assert_eq ! (
1136
+ map. get_disjoint_indices_mut( [ 0 , 2 ] ) ,
1137
+ Ok ( [ ( & 42 , & mut 0o42 ) , ( & 321 , & mut 20 ) ] )
1138
+ ) ;
1139
+ }
1140
+
1094
1141
#[ test]
1095
1142
fn disjoint_indices_mut_fail_duplicate ( ) {
1096
1143
let mut map: RingMap < u32 , u32 > = RingMap :: default ( ) ;
0 commit comments