@@ -135,6 +135,49 @@ use super::range::RangeArgument;
135
135
/// }
136
136
/// ```
137
137
///
138
+ /// # Indexing
139
+ ///
140
+ /// The Vec type allows to access values by index, because it implements the
141
+ /// `Index` trait. An example will be more explicit:
142
+ ///
143
+ /// ```
144
+ /// let v = vec!(0, 2, 4, 6);
145
+ /// println!("{}", v[1]); // it will display '2'
146
+ /// ```
147
+ ///
148
+ /// However be careful: if you try to access an index which isn't in the Vec,
149
+ /// your software will panic! You cannot do this:
150
+ ///
151
+ /// ```ignore
152
+ /// let v = vec!(0, 2, 4, 6);
153
+ /// println!("{}", v[6]); // it will panic!
154
+ /// ```
155
+ ///
156
+ /// In conclusion: always check if the index you want to get really exists
157
+ /// before doing it.
158
+ ///
159
+ /// # Slicing
160
+ ///
161
+ /// A Vec can be mutable. Slices, on the other hand, are read-only objects.
162
+ /// To get a slice, use "&". Example:
163
+ ///
164
+ /// ```
165
+ /// fn read_slice(slice: &[usize]) {
166
+ /// // ...
167
+ /// }
168
+ ///
169
+ /// let v = vec!(0, 1);
170
+ /// read_slice(&v);
171
+ ///
172
+ /// // ... and that's all!
173
+ /// // you can also do it like this:
174
+ /// let x : &[usize] = &v;
175
+ /// ```
176
+ ///
177
+ /// In Rust, it's more common to pass slices as arguments rather than vectors
178
+ /// when you just want to provide a read access. The same goes for String and
179
+ /// &str.
180
+ ///
138
181
/// # Capacity and reallocation
139
182
///
140
183
/// The capacity of a vector is the amount of space allocated for any future
0 commit comments