core: Add vec::capacity

This commit is contained in:
Brian Anderson 2012-03-28 23:10:58 -07:00
parent 5e42c5cf19
commit ad21976fbc

View File

@ -9,6 +9,7 @@ export is_not_empty;
export same_length;
export reserve;
export reserve_at_least;
export capacity;
export len;
export from_fn;
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));
}
#[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"]
#[inline(always)]
pure fn len<T>(&&v: [const T]) -> uint unsafe {
@ -1801,6 +1810,16 @@ mod tests {
unshift(x, 0);
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: