@@ -289,7 +289,7 @@ pub struct Drain<'a, T: 'a> {
289
289
290
290
impl <'a , T > Iterator for Drain <'a , T > {
291
291
type Item = T ;
292
- fn next (& mut self ) -> Option <T > { self . iter. next_back () }
292
+ fn next (& mut self ) -> Option <T > { self . iter. next () }
293
293
fn size_hint (& self ) -> (usize , Option <usize >) { self . iter. size_hint () }
294
294
}
295
295
@@ -304,5 +304,77 @@ impl<'a, T> Drop for Drain<'a, T> {
304
304
}
305
305
}
306
306
307
- # fn main () {}
307
+ # fn main () {
308
+ # tests :: create_push_pop ();
309
+ # tests :: iter_test ();
310
+ # tests :: test_drain ();
311
+ # tests :: test_zst ();
312
+ # println! (" All tests finished OK" );
313
+ # }
314
+
315
+ # mod tests {
316
+ # use super :: * ;
317
+ # pub fn create_push_pop () {
318
+ # let mut v = Vec :: new ();
319
+ # v . push (1 );
320
+ # assert_eq! (1 , v . len ());
321
+ # assert_eq! (1 , v [0 ]);
322
+ # for i in v . iter_mut () {
323
+ # * i += 1 ;
324
+ # }
325
+ # v . insert (0 , 5 );
326
+ # let x = v . pop ();
327
+ # assert_eq! (Some (2 ), x );
328
+ # assert_eq! (1 , v . len ());
329
+ # v . push (10 );
330
+ # let x = v . remove (0 );
331
+ # assert_eq! (5 , x );
332
+ # assert_eq! (1 , v . len ());
333
+ # }
334
+ #
335
+ # pub fn iter_test () {
336
+ # let mut v = Vec :: new ();
337
+ # for i in 0 .. 10 {
338
+ # v . push (Box :: new (i ))
339
+ # }
340
+ # let mut iter = v . into_iter ();
341
+ # let first = iter . next (). unwrap ();
342
+ # let last = iter . next_back (). unwrap ();
343
+ # drop (iter );
344
+ # assert_eq! (0 , * first );
345
+ # assert_eq! (9 , * last );
346
+ # }
347
+ #
348
+ # pub fn test_drain () {
349
+ # let mut v = Vec :: new ();
350
+ # for i in 0 .. 10 {
351
+ # v . push (Box :: new (i ))
352
+ # }
353
+ # {
354
+ # let mut drain = v . drain ();
355
+ # let first = drain . next (). unwrap ();
356
+ # let last = drain . next_back (). unwrap ();
357
+ # assert_eq! (0 , * first );
358
+ # assert_eq! (9 , * last );
359
+ # }
360
+ # assert_eq! (0 , v . len ());
361
+ # v . push (Box :: new (1 ));
362
+ # assert_eq! (1 , * v . pop (). unwrap ());
363
+ # }
364
+ #
365
+ # pub fn test_zst () {
366
+ # let mut v = Vec :: new ();
367
+ # for _i in 0 .. 10 {
368
+ # v . push (())
369
+ # }
370
+ #
371
+ # let mut count = 0 ;
372
+ #
373
+ # for _ in v . into_iter () {
374
+ # count += 1
375
+ # }
376
+ #
377
+ # assert_eq! (10 , count );
378
+ # }
379
+ # }
308
380
```
0 commit comments