]> git.proxmox.com Git - rustc.git/blame - src/doc/trpl/vectors.md
Imported Upstream version 1.0.0+dfsg1
[rustc.git] / src / doc / trpl / vectors.md
CommitLineData
9346a6ac
AL
1% Vectors
2
bd371182
AL
3A ‘vector’ is a dynamic or ‘growable’ array, implemented as the standard
4library type [`Vec<T>`][vec]. The `T` means that we can have vectors
5of any type (see the chapter on [generics][generic] for more).
6Vectors always allocate their data on the heap.
7You can create them with the `vec!` macro:
8
9```rust
10let v = vec![1, 2, 3, 4, 5]; // v: Vec<i32>
9346a6ac
AL
11```
12
bd371182
AL
13(Notice that unlike the `println!` macro we’ve used in the past, we use square
14brackets `[]` with `vec!` macro. Rust allows you to use either in either situation,
9346a6ac
AL
15this is just convention.)
16
bd371182 17There’s an alternate form of `vec!` for repeating an initial value:
9346a6ac
AL
18
19```
20let v = vec![0; 10]; // ten zeroes
21```
22
bd371182
AL
23## Accessing elements
24
25To get the value at a particular index in the vector, we use `[]`s:
26
27```rust
28let v = vec![1, 2, 3, 4, 5];
29
30println!("The third element of v is {}", v[2]);
31```
32
33The indices count from `0`, so the third element is `v[2]`.
34
35## Iterating
36
37Once you have a vector, you can iterate through its elements with `for`. There
38are three versions:
9346a6ac 39
bd371182
AL
40```rust
41let mut v = vec![1, 2, 3, 4, 5];
9346a6ac 42
bd371182
AL
43for i in &v {
44 println!("A reference to {}", i);
45}
9346a6ac 46
bd371182
AL
47for i in &mut v {
48 println!("A mutable reference to {}", i);
49}
50
51for i in v {
52 println!("Take ownership of the vector and its element {}", i);
53}
9346a6ac
AL
54```
55
bd371182
AL
56Vectors have many more useful methods, which you can read about in [their
57API documentation][vec].
58
59[vec]: ../std/vec/index.html
60[generic]: generics.html