Skip to content

Commit fbbbfc3

Browse files
committed
https://github.com/rust-lang/rust/pull/92284
1 parent 486ef0d commit fbbbfc3

File tree

2 files changed

+13
-17
lines changed

2 files changed

+13
-17
lines changed

Cargo.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
[package]
22
edition = "2021"
33
name = "int-vec-2d"
4-
version = "0.1.1"
4+
version = "0.1.2"
55
#rust-version = "nightly"
66
authors = ["warlock <[email protected]>"]
77
description = "Vectors, points, rectangles, etc. with `i16` coordinates."

src/lib.rs

Lines changed: 12 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@
1717

1818
use core::cmp::{min, max};
1919
use core::iter::{DoubleEndedIterator, FusedIterator, Iterator, TrustedLen};
20-
use core::num::NonZeroI16;
20+
use core::num::{NonZeroI16, NonZeroUsize};
2121
use core::ops::{Add, AddAssign, Sub, SubAssign, Neg, Index, IndexMut};
2222
use core::option::{Option};
2323
use either::{Either, Left, Right};
@@ -142,11 +142,10 @@ impl Iterator for Range1d {
142142
if self.is_empty() { None } else { Some(self.end) }
143143
}
144144

145-
fn advance_by(&mut self, n: usize) -> Result<(), usize> {
146-
let len = self.len();
147-
if n > len {
145+
fn advance_by(&mut self, n: usize) -> Result<(), NonZeroUsize> {
146+
if let Some(rem) = n.checked_sub(self.len()).and_then(NonZeroUsize::new) {
148147
self.start = self.end;
149-
return Err(len);
148+
return Err(rem);
150149
}
151150
self.start = self.start.wrapping_add(n as u16 as i16);
152151
Ok(())
@@ -166,11 +165,10 @@ impl DoubleEndedIterator for Range1d {
166165
}
167166
}
168167

169-
fn advance_back_by(&mut self, n: usize) -> Result<(), usize> {
170-
let len = self.len();
171-
if n > len {
168+
fn advance_back_by(&mut self, n: usize) -> Result<(), NonZeroUsize> {
169+
if let Some(rem) = n.checked_sub(self.len()).and_then(NonZeroUsize::new) {
172170
self.end = self.start;
173-
return Err(len);
171+
return Err(rem);
174172
}
175173
self.end = self.end.wrapping_sub(n as u16 as i16);
176174
Ok(())
@@ -662,13 +660,11 @@ impl Iterator for RectPoints {
662660
if self.rect.is_empty() { None } else { Some(self.rect.br_inner()) }
663661
}
664662

665-
fn advance_by(&mut self, n: usize) -> Result<(), usize> {
666-
if let Some(size) = self.size_hint().1 {
667-
if n > size {
668-
self.x = self.rect.l();
669-
self.rect.tl = self.rect.bl();
670-
return Err(size);
671-
}
663+
fn advance_by(&mut self, n: usize) -> Result<(), NonZeroUsize> {
664+
if let Some(rem) = self.size_hint().1.and_then(|len| n.checked_sub(len)).and_then(NonZeroUsize::new) {
665+
self.x = self.rect.l();
666+
self.rect.tl = self.rect.bl();
667+
return Err(rem);
672668
}
673669
let n = n as u32;
674670
let current_line_last = self.rect.r().wrapping_sub(self.x) as u16 as u32;

0 commit comments

Comments
 (0)