@@ -89,7 +89,7 @@ impl Gtid {
89
89
self . intervals . push ( interval) ;
90
90
return ;
91
91
}
92
- if let Some ( & first) = self . intervals . first ( ) {
92
+ if let Some ( first) = self . intervals . first_mut ( ) {
93
93
// if interval is strictly before intervals
94
94
if interval. 1 < first. 0 {
95
95
self . intervals . insert ( 0 , interval) ;
@@ -98,25 +98,19 @@ impl Gtid {
98
98
99
99
// if interval merge before interval
100
100
if interval. 1 == first. 0 {
101
- // unwrapping is ok as intervals is not empty
102
-
103
- let first = self . intervals . first_mut ( ) . unwrap ( ) ;
104
- * first = ( interval. 0 , first. 1 ) ;
101
+ first. 0 = interval. 0 ;
105
102
return ;
106
103
}
107
104
}
108
105
109
- if let Some ( & last) = self . intervals . last ( ) {
106
+ if let Some ( last) = self . intervals . last_mut ( ) {
110
107
if interval. 0 > last. 1 {
111
108
self . intervals . push ( interval) ;
112
109
return ;
113
110
}
114
111
115
112
if interval. 0 == last. 1 {
116
- // unwrapping is ok as intervals is not empty
117
-
118
- let last = self . intervals . last_mut ( ) . unwrap ( ) ;
119
- * last = ( last. 0 , interval. 1 ) ;
113
+ last. 1 = interval. 1 ;
120
114
return ;
121
115
}
122
116
}
@@ -126,17 +120,10 @@ impl Gtid {
126
120
. binary_search_by ( |elem| elem. 1 . cmp ( & interval. 0 ) )
127
121
{
128
122
Err ( idx) => {
129
- // error case so it won't merge with previous
130
- // it may merge before the item currently at idx
131
- if idx == self . intervals . len ( ) {
132
- // previously treated
133
- unreachable ! ( )
134
- }
135
- // we can unwrap as the case interval is after the last element is treated before
136
- let next = self . intervals . get ( idx) . unwrap ( ) ;
123
+ let next = & mut self . intervals [ idx] ;
137
124
// interval merges with next
138
125
if next. 0 == interval. 1 {
139
- * self . intervals . get_mut ( idx ) . unwrap ( ) = ( interval. 0 , next . 1 ) ;
126
+ next . 0 = interval. 0 ;
140
127
} else {
141
128
// just add interval, nothing to merge
142
129
self . intervals . insert ( idx, interval) ;
@@ -151,21 +138,19 @@ impl Gtid {
151
138
152
139
// interval merges with before and after
153
140
if interval. 0 == before. 1 && interval. 1 == after. 0 {
154
- * self . intervals . get_mut ( idx) . unwrap ( ) = ( before. 0 , after. 1 ) ;
141
+ self . intervals [ idx] = ( before. 0 , after. 1 ) ;
155
142
self . intervals . remove ( idx + 1 ) ;
156
143
} else if
157
144
// interval merges with before
158
145
interval. 0 == before. 1 {
159
- * self . intervals . get_mut ( idx) . unwrap ( ) = ( before. 0 , interval. 1 ) ;
146
+ self . intervals [ idx] = ( before. 0 , interval. 1 ) ;
160
147
} else if
161
148
// interval merges with after
162
149
interval. 1 == after. 0 {
163
- unreachable ! ( "should have been treated in the error branch before" ) ;
164
- // *self.intervals.get_mut(idx + 1).unwrap() = (interval.0, after.1);
150
+ unreachable ! ( "should have been treated in the error branch before: interval merges with after" ) ;
165
151
} else {
166
152
// interval does not merge
167
- unreachable ! ( "should have been treated in the error branch before" ) ;
168
- // self.intervals.insert(idx + 1, interval)
153
+ unreachable ! ( "should have been treated in the error branch before: interval does not merge" ) ;
169
154
}
170
155
}
171
156
}
0 commit comments