Skip to content

Commit e0cec53

Browse files
committed
Simplifications followin @bnjbvr review.
1 parent ddd0d8c commit e0cec53

File tree

1 file changed

+10
-25
lines changed

1 file changed

+10
-25
lines changed

src/lib.rs

Lines changed: 10 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -89,7 +89,7 @@ impl Gtid {
8989
self.intervals.push(interval);
9090
return;
9191
}
92-
if let Some(&first) = self.intervals.first() {
92+
if let Some(first) = self.intervals.first_mut() {
9393
// if interval is strictly before intervals
9494
if interval.1 < first.0 {
9595
self.intervals.insert(0, interval);
@@ -98,25 +98,19 @@ impl Gtid {
9898

9999
// if interval merge before interval
100100
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;
105102
return;
106103
}
107104
}
108105

109-
if let Some(&last) = self.intervals.last() {
106+
if let Some(last) = self.intervals.last_mut() {
110107
if interval.0 > last.1 {
111108
self.intervals.push(interval);
112109
return;
113110
}
114111

115112
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;
120114
return;
121115
}
122116
}
@@ -126,17 +120,10 @@ impl Gtid {
126120
.binary_search_by(|elem| elem.1.cmp(&interval.0))
127121
{
128122
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];
137124
// interval merges with next
138125
if next.0 == interval.1 {
139-
*self.intervals.get_mut(idx).unwrap() = (interval.0, next.1);
126+
next.0 = interval.0;
140127
} else {
141128
// just add interval, nothing to merge
142129
self.intervals.insert(idx, interval);
@@ -151,21 +138,19 @@ impl Gtid {
151138

152139
// interval merges with before and after
153140
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);
155142
self.intervals.remove(idx + 1);
156143
} else if
157144
// interval merges with before
158145
interval.0 == before.1 {
159-
*self.intervals.get_mut(idx).unwrap() = (before.0, interval.1);
146+
self.intervals[idx] = (before.0, interval.1);
160147
} else if
161148
// interval merges with after
162149
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");
165151
} else {
166152
// 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");
169154
}
170155
}
171156
}

0 commit comments

Comments
 (0)