Clarify contiguous memory array structure of vectors in documentation

Closes #31554.

Contributes to #29380.
This commit is contained in:
Dirk Gadsden 2016-02-14 17:00:46 -08:00
parent a888333ea6
commit f9fe6585dc
2 changed files with 12 additions and 5 deletions

View File

@ -11,8 +11,8 @@ let v = vec![1, 2, 3, 4, 5]; // v: Vec<i32>
```
(Notice that unlike the `println!` macro weve used in the past, we use square
brackets `[]` with `vec!` macro. Rust allows you to use either in either situation,
this is just convention.)
brackets `[]` with `vec!` macro. Rust allows you to use either in either
situation, this is just convention.)
Theres an alternate form of `vec!` for repeating an initial value:
@ -20,6 +20,12 @@ Theres an alternate form of `vec!` for repeating an initial value:
let v = vec![0; 10]; // ten zeroes
```
Vectors store their contents as contiguous arrays of `T` on the heap. This means
that they must be able to know the size of `T` at compile time (that is, how
many bytes are needed to store a `T`?). The size of some things can't be known
at compile time. For these you'll have to store a pointer to that thing:
thankfully, the [`Box`][box] type works perfectly for this.
## Accessing elements
To get the value at a particular index in the vector, we use `[]`s:
@ -113,6 +119,7 @@ Vectors have many more useful methods, which you can read about in [their
API documentation][vec].
[vec]: ../std/vec/index.html
[box]: ../std/boxed/index.html
[generic]: generics.html
[panic]: concurrency.html#panics
[get]: http://doc.rust-lang.org/std/vec/struct.Vec.html#method.get

View File

@ -8,8 +8,8 @@
// option. This file may not be copied, modified, or distributed
// except according to those terms.
//! A growable list type with heap-allocated contents, written `Vec<T>` but
//! pronounced 'vector.'
//! A contiguous growable array type with heap-allocated contents, written
//! `Vec<T>` but pronounced 'vector.'
//!
//! Vectors have `O(1)` indexing, amortized `O(1)` push (to the end) and
//! `O(1)` pop (from the end).
@ -78,7 +78,7 @@ use borrow::{Cow, IntoCow};
use super::range::RangeArgument;
/// A growable list type, written `Vec<T>` but pronounced 'vector.'
/// A contiguous growable array type, written `Vec<T>` but pronounced 'vector.'
///
/// # Examples
///