Documented unsafe blocks
This commit is contained in:
parent
b15e13760a
commit
c082c1c4c3
@ -458,8 +458,12 @@ fn next(&mut self) -> Option<&'a [T]> {
|
||||
match self.v.iter().position(|x| (self.pred)(x)) {
|
||||
None => self.finish(),
|
||||
Some(idx) => {
|
||||
let ret = Some(unsafe { self.v.get_unchecked(..idx) });
|
||||
self.v = unsafe { self.v.get_unchecked(idx + 1..) };
|
||||
let (left, right) =
|
||||
// SAFETY: if v.iter().position returns Some(idx), that
|
||||
// idx is definitely a valid index for v
|
||||
unsafe { (self.v.get_unchecked(..idx), self.v.get_unchecked(idx + 1..)) };
|
||||
let ret = Some(left);
|
||||
self.v = right;
|
||||
ret
|
||||
}
|
||||
}
|
||||
@ -491,8 +495,12 @@ fn next_back(&mut self) -> Option<&'a [T]> {
|
||||
match self.v.iter().rposition(|x| (self.pred)(x)) {
|
||||
None => self.finish(),
|
||||
Some(idx) => {
|
||||
let ret = Some(unsafe { self.v.get_unchecked(idx + 1..) });
|
||||
self.v = unsafe { self.v.get_unchecked(..idx) };
|
||||
let (left, right) =
|
||||
// SAFETY: if v.iter().rposition returns Some(idx), then
|
||||
// idx is definitely a valid index for v
|
||||
unsafe { (self.v.get_unchecked(..idx), self.v.get_unchecked(idx + 1..)) };
|
||||
let ret = Some(right);
|
||||
self.v = left;
|
||||
ret
|
||||
}
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user