Skip to content

Commit 5d602d7

Browse files
committed
Slightly improve try_into_range perf
1 parent ba68eff commit 5d602d7

File tree

1 file changed

+14
-9
lines changed

1 file changed

+14
-9
lines changed

src/bounds/userbounds.rs

+14-9
Original file line numberDiff line numberDiff line change
@@ -213,30 +213,32 @@ impl UserBoundsTrait<i32> for UserBounds {
213213
/// );
214214
/// ```
215215
fn try_into_range(&self, parts_length: usize) -> Result<Range<usize>> {
216-
let start: usize = match self.l {
216+
let parts_length = parts_length as i32;
217+
218+
let start: i32 = match self.l {
217219
Side::Continue => 0,
218220
Side::Some(v) => {
219-
if v.unsigned_abs() as usize > parts_length {
221+
if v > parts_length || v < -parts_length {
220222
bail!("Out of bounds: {}", v);
221223
}
222224
if v < 0 {
223-
parts_length - v.unsigned_abs() as usize
225+
parts_length + v
224226
} else {
225-
v as usize - 1
227+
v - 1
226228
}
227229
}
228230
};
229231

230-
let end: usize = match self.r {
232+
let end: i32 = match self.r {
231233
Side::Continue => parts_length,
232234
Side::Some(v) => {
233-
if v.unsigned_abs() as usize > parts_length {
235+
if v > parts_length || v < -parts_length {
234236
bail!("Out of bounds: {}", v);
235237
}
236238
if v < 0 {
237-
parts_length - v.unsigned_abs() as usize + 1
239+
parts_length + v + 1
238240
} else {
239-
v as usize
241+
v
240242
}
241243
}
242244
};
@@ -246,7 +248,10 @@ impl UserBoundsTrait<i32> for UserBounds {
246248
bail!("Field left value cannot be greater than right value");
247249
}
248250

249-
Ok(Range { start, end })
251+
Ok(Range {
252+
start: start as usize,
253+
end: end as usize,
254+
})
250255
}
251256

252257
/// Transform a ranged bound into a list of one or more

0 commit comments

Comments
 (0)