4
4
5
5
The container traits are defined in the ` std::container ` module.
6
6
7
- ## Unique and managed vectors
7
+ ## Unique vectors
8
8
9
- Vectors have ` O(1) ` indexing and removal from the end, along with ` O(1) `
10
- amortized insertion. Vectors are the most common container in Rust, and are
11
- flexible enough to fit many use cases.
9
+ Vectors have ` O(1) ` indexing, push (to the end) and pop (from the end). Vectors
10
+ are the most common container in Rust, and are flexible enough to fit many use
11
+ cases.
12
12
13
13
Vectors can also be sorted and used as efficient lookup tables with the
14
- ` std::vec:: bsearch` function , if all the elements are inserted at one time and
14
+ ` bsearch() ` method , if all the elements are inserted at one time and
15
15
deletions are unnecessary.
16
16
17
17
## Maps and sets
@@ -42,10 +42,15 @@ implementing the `IterBytes` trait.
42
42
43
43
## Double-ended queues
44
44
45
- The ` extra::deque ` module implements a double-ended queue with ` O(1) ` amortized
46
- inserts and removals from both ends of the container. It also has ` O(1) `
47
- indexing like a vector. The contained elements are not required to be copyable,
48
- and the queue will be sendable if the contained type is sendable.
45
+ The ` extra::ringbuf ` module implements a double-ended queue with ` O(1) `
46
+ amortized inserts and removals from both ends of the container. It also has
47
+ ` O(1) ` indexing like a vector. The contained elements are not required to be
48
+ copyable, and the queue will be sendable if the contained type is sendable.
49
+ Its interface ` Deque ` is defined in ` extra::collections ` .
50
+
51
+ The ` extra::dlist ` module implements a double-ended linked list, also
52
+ implementing the ` Deque ` trait, with ` O(1) ` removals and inserts at either end,
53
+ and ` O(1) ` concatenation.
49
54
50
55
## Priority queues
51
56
@@ -197,11 +202,11 @@ The function `range` (or `range_inclusive`) allows to simply iterate through a g
197
202
198
203
~~~
199
204
for i in range(0, 5) {
200
- printf !("%d ", i) // prints "0 1 2 3 4"
205
+ print !("{} ", i) // prints "0 1 2 3 4"
201
206
}
202
207
203
208
for i in std::iter::range_inclusive(0, 5) { // needs explicit import
204
- printf !("%d ", i) // prints "0 1 2 3 4 5"
209
+ print !("{} ", i) // prints "0 1 2 3 4 5"
205
210
}
206
211
~~~
207
212
@@ -233,15 +238,15 @@ let mut it = xs.iter().zip(ys.iter());
233
238
234
239
// print out the pairs of elements up to (&3, &"baz")
235
240
for (x, y) in it {
236
- printfln !("%d %s ", * x, * y);
241
+ println !("{} {} ", * x, * y);
237
242
238
243
if *x == 3 {
239
244
break;
240
245
}
241
246
}
242
247
243
248
// yield and print the last pair from the iterator
244
- printfln !("last: %? ", it.next());
249
+ println !("last: {:?} ", it.next());
245
250
246
251
// the iterator is now fully consumed
247
252
assert!(it.next().is_none());
@@ -335,13 +340,13 @@ another `DoubleEndedIterator` with `next` and `next_back` exchanged.
335
340
~~~
336
341
let xs = [1, 2, 3, 4, 5, 6];
337
342
let mut it = xs.iter();
338
- printfln !("%? ", it.next()); // prints `Some(&1)`
339
- printfln !("%? ", it.next()); // prints `Some(&2)`
340
- printfln !("%? ", it.next_back()); // prints `Some(&6)`
343
+ println !("{:?} ", it.next()); // prints `Some(&1)`
344
+ println !("{:?} ", it.next()); // prints `Some(&2)`
345
+ println !("{:?} ", it.next_back()); // prints `Some(&6)`
341
346
342
347
// prints `5`, `4` and `3`
343
348
for &x in it.invert() {
344
- printfln !("%? ", x)
349
+ println !("{} ", x)
345
350
}
346
351
~~~
347
352
@@ -356,11 +361,11 @@ let xs = [1, 2, 3, 4];
356
361
let ys = [5, 6, 7, 8];
357
362
let mut it = xs.iter().chain(ys.iter()).map(|&x| x * 2);
358
363
359
- printfln !("%? ", it.next()); // prints `Some(2)`
364
+ println !("{:?} ", it.next()); // prints `Some(2)`
360
365
361
366
// prints `16`, `14`, `12`, `10`, `8`, `6`, `4`
362
367
for x in it.invert() {
363
- printfln !("%? ", x);
368
+ println !("{} ", x);
364
369
}
365
370
~~~
366
371
@@ -387,17 +392,17 @@ underlying iterators are.
387
392
let xs = [1, 2, 3, 4, 5];
388
393
let ys = ~[7, 9, 11];
389
394
let mut it = xs.iter().chain(ys.iter());
390
- printfln !("%? ", it.idx(0)); // prints `Some(&1)`
391
- printfln !("%? ", it.idx(5)); // prints `Some(&7)`
392
- printfln !("%? ", it.idx(7)); // prints `Some(&11)`
393
- printfln !("%? ", it.idx(8)); // prints `None`
395
+ println !("{:?} ", it.idx(0)); // prints `Some(&1)`
396
+ println !("{:?} ", it.idx(5)); // prints `Some(&7)`
397
+ println !("{:?} ", it.idx(7)); // prints `Some(&11)`
398
+ println !("{:?} ", it.idx(8)); // prints `None`
394
399
395
400
// yield two elements from the beginning, and one from the end
396
401
it.next();
397
402
it.next();
398
403
it.next_back();
399
404
400
- printfln !("%? ", it.idx(0)); // prints `Some(&3)`
401
- printfln !("%? ", it.idx(4)); // prints `Some(&9)`
402
- printfln !("%? ", it.idx(6)); // prints `None`
405
+ println !("{:?} ", it.idx(0)); // prints `Some(&3)`
406
+ println !("{:?} ", it.idx(4)); // prints `Some(&9)`
407
+ println !("{:?} ", it.idx(6)); // prints `None`
403
408
~~~
0 commit comments