std: Add a function to iterate over a subset of a vec
This commit is contained in:
committed by
Marijn Haverbeke
parent
da91b60343
commit
2ddd084631
@@ -753,10 +753,26 @@ element's value.
|
|||||||
"]
|
"]
|
||||||
#[inline(always)]
|
#[inline(always)]
|
||||||
fn iter<T>(v: [const T], f: fn(T)) {
|
fn iter<T>(v: [const T], f: fn(T)) {
|
||||||
|
iter_between(v, 0u, vec::len(v), f)
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
Function: iter_between
|
||||||
|
|
||||||
|
Iterates over a vector
|
||||||
|
|
||||||
|
Iterates over vector `v` and, for each element, calls function `f` with the
|
||||||
|
element's value.
|
||||||
|
|
||||||
|
*/
|
||||||
|
#[inline(always)]
|
||||||
|
fn iter_between<T>(v: [const T], start: uint, end: uint, f: fn(T)) {
|
||||||
|
assert start <= end;
|
||||||
|
assert end <= vec::len(v);
|
||||||
unsafe {
|
unsafe {
|
||||||
let mut n = vec::len(v);
|
let mut n = end;
|
||||||
let mut p = unsafe::to_ptr(v);
|
let mut p = ptr::offset(unsafe::to_ptr(v), start);
|
||||||
while n > 0u {
|
while n > start {
|
||||||
f(*p);
|
f(*p);
|
||||||
p = ptr::offset(p, 1u);
|
p = ptr::offset(p, 1u);
|
||||||
n -= 1u;
|
n -= 1u;
|
||||||
|
|||||||
Reference in New Issue
Block a user