core: Add vec::capacity
This commit is contained in:
@@ -9,6 +9,7 @@ export is_not_empty;
|
|||||||
export same_length;
|
export same_length;
|
||||||
export reserve;
|
export reserve;
|
||||||
export reserve_at_least;
|
export reserve_at_least;
|
||||||
|
export capacity;
|
||||||
export len;
|
export len;
|
||||||
export from_fn;
|
export from_fn;
|
||||||
export from_elem;
|
export from_elem;
|
||||||
@@ -134,6 +135,14 @@ fn reserve_at_least<T>(&v: [const T], n: uint) {
|
|||||||
reserve(v, uint::next_power_of_two(n));
|
reserve(v, uint::next_power_of_two(n));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[doc = "
|
||||||
|
Returns the number of elements the vector can hold without reallocating
|
||||||
|
"]
|
||||||
|
fn capacity<T>(&&v: [const T]) -> uint unsafe {
|
||||||
|
let repr: **unsafe::vec_repr = ::unsafe::reinterpret_cast(addr_of(v));
|
||||||
|
(**repr).alloc / sys::size_of::<T>()
|
||||||
|
}
|
||||||
|
|
||||||
#[doc = "Returns the length of a vector"]
|
#[doc = "Returns the length of a vector"]
|
||||||
#[inline(always)]
|
#[inline(always)]
|
||||||
pure fn len<T>(&&v: [const T]) -> uint unsafe {
|
pure fn len<T>(&&v: [const T]) -> uint unsafe {
|
||||||
@@ -1801,6 +1810,16 @@ mod tests {
|
|||||||
unshift(x, 0);
|
unshift(x, 0);
|
||||||
assert x == [0, 1, 2, 3];
|
assert x == [0, 1, 2, 3];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn test_capacity() {
|
||||||
|
let mut v = [0u64];
|
||||||
|
reserve(v, 10u);
|
||||||
|
assert capacity(v) == 10u;
|
||||||
|
let mut v = [0u32];
|
||||||
|
reserve(v, 10u);
|
||||||
|
assert capacity(v) == 10u;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Local Variables:
|
// Local Variables:
|
||||||
|
|||||||
Reference in New Issue
Block a user