@@ -325,6 +325,30 @@ pub trait MutableSet<T>: Set<T> + Mutable {
325
325
fn remove ( & mut self , value : & T ) -> bool ;
326
326
}
327
327
328
+ pub trait MutableSeq < T > : Mutable {
329
+ /// Append an element to the back of a collection.
330
+ ///
331
+ /// # Example
332
+ ///
333
+ /// ```rust
334
+ /// let mut vec = vec!(1i, 2);
335
+ /// vec.push(3);
336
+ /// assert_eq!(vec, vec!(1, 2, 3));
337
+ /// ```
338
+ fn push ( & mut self , t : T ) ;
339
+ /// Remove the last element from a collection and return it, or `None` if it is
340
+ /// empty.
341
+ ///
342
+ /// # Example
343
+ ///
344
+ /// ```rust
345
+ /// let mut vec = vec!(1i, 2, 3);
346
+ /// assert_eq!(vec.pop(), Some(3));
347
+ /// assert_eq!(vec, vec!(1, 2));
348
+ /// ```
349
+ fn pop ( & mut self ) -> Option < T > ;
350
+ }
351
+
328
352
/// A double-ended sequence that allows querying, insertion and deletion at both
329
353
/// ends.
330
354
///
@@ -336,9 +360,9 @@ pub trait MutableSet<T>: Set<T> + Mutable {
336
360
/// use std::collections::{RingBuf, Deque};
337
361
///
338
362
/// let mut queue = RingBuf::new();
339
- /// queue.push_back (1i);
340
- /// queue.push_back (2i);
341
- /// queue.push_back (3i);
363
+ /// queue.push (1i);
364
+ /// queue.push (2i);
365
+ /// queue.push (3i);
342
366
///
343
367
/// // Will print 1, 2, 3
344
368
/// while !queue.is_empty() {
@@ -374,17 +398,17 @@ pub trait MutableSet<T>: Set<T> + Mutable {
374
398
/// // Init deque with 1, 2, 3, 4
375
399
/// deque.push_front(2i);
376
400
/// deque.push_front(1i);
377
- /// deque.push_back (3i);
378
- /// deque.push_back (4i);
401
+ /// deque.push (3i);
402
+ /// deque.push (4i);
379
403
///
380
404
/// // Will print (1, 4) and (2, 3)
381
405
/// while !deque.is_empty() {
382
406
/// let f = deque.pop_front().unwrap();
383
- /// let b = deque.pop_back ().unwrap();
407
+ /// let b = deque.pop ().unwrap();
384
408
/// println!("{}", (f, b));
385
409
/// }
386
410
/// ```
387
- pub trait Deque < T > : Mutable {
411
+ pub trait Deque < T > : MutableSeq < T > {
388
412
/// Provide a reference to the front element, or `None` if the sequence is
389
413
/// empty.
390
414
///
@@ -396,8 +420,8 @@ pub trait Deque<T> : Mutable {
396
420
/// let mut d = RingBuf::new();
397
421
/// assert_eq!(d.front(), None);
398
422
///
399
- /// d.push_back (1i);
400
- /// d.push_back (2i);
423
+ /// d.push (1i);
424
+ /// d.push (2i);
401
425
/// assert_eq!(d.front(), Some(&1i));
402
426
/// ```
403
427
fn front < ' a > ( & ' a self ) -> Option < & ' a T > ;
@@ -413,8 +437,8 @@ pub trait Deque<T> : Mutable {
413
437
/// let mut d = RingBuf::new();
414
438
/// assert_eq!(d.front_mut(), None);
415
439
///
416
- /// d.push_back (1i);
417
- /// d.push_back (2i);
440
+ /// d.push (1i);
441
+ /// d.push (2i);
418
442
/// match d.front_mut() {
419
443
/// Some(x) => *x = 9i,
420
444
/// None => (),
@@ -434,8 +458,8 @@ pub trait Deque<T> : Mutable {
434
458
/// let mut d = DList::new();
435
459
/// assert_eq!(d.back(), None);
436
460
///
437
- /// d.push_back (1i);
438
- /// d.push_back (2i);
461
+ /// d.push (1i);
462
+ /// d.push (2i);
439
463
/// assert_eq!(d.back(), Some(&2i));
440
464
/// ```
441
465
fn back < ' a > ( & ' a self ) -> Option < & ' a T > ;
@@ -451,8 +475,8 @@ pub trait Deque<T> : Mutable {
451
475
/// let mut d = DList::new();
452
476
/// assert_eq!(d.back(), None);
453
477
///
454
- /// d.push_back (1i);
455
- /// d.push_back (2i);
478
+ /// d.push (1i);
479
+ /// d.push (2i);
456
480
/// match d.back_mut() {
457
481
/// Some(x) => *x = 9i,
458
482
/// None => (),
@@ -479,21 +503,22 @@ pub trait Deque<T> : Mutable {
479
503
///
480
504
/// # Example
481
505
///
482
- /// ```
506
+ /// ```ignore
483
507
/// use std::collections::{DList, Deque};
484
508
///
485
509
/// let mut d = DList::new();
486
510
/// d.push_back(1i);
487
511
/// d.push_back(2i);
488
512
/// assert_eq!(d.front(), Some(&1i));
489
513
/// ```
490
- fn push_back ( & mut self , elt : T ) ;
514
+ #[ deprecated = "use the `push` method" ]
515
+ fn push_back ( & mut self , elt : T ) { self . push ( elt) }
491
516
492
517
/// Remove the last element and return it, or `None` if the sequence is empty.
493
518
///
494
519
/// # Example
495
520
///
496
- /// ```
521
+ /// ```ignore
497
522
/// use std::collections::{RingBuf, Deque};
498
523
///
499
524
/// let mut d = RingBuf::new();
@@ -504,7 +529,8 @@ pub trait Deque<T> : Mutable {
504
529
/// assert_eq!(d.pop_back(), Some(1i));
505
530
/// assert_eq!(d.pop_back(), None);
506
531
/// ```
507
- fn pop_back ( & mut self ) -> Option < T > ;
532
+ #[ deprecated = "use the `pop` method" ]
533
+ fn pop_back ( & mut self ) -> Option < T > { self . pop ( ) }
508
534
509
535
/// Remove the first element and return it, or `None` if the sequence is empty.
510
536
///
@@ -514,8 +540,8 @@ pub trait Deque<T> : Mutable {
514
540
/// use std::collections::{RingBuf, Deque};
515
541
///
516
542
/// let mut d = RingBuf::new();
517
- /// d.push_back (1i);
518
- /// d.push_back (2i);
543
+ /// d.push (1i);
544
+ /// d.push (2i);
519
545
///
520
546
/// assert_eq!(d.pop_front(), Some(1i));
521
547
/// assert_eq!(d.pop_front(), Some(2i));
@@ -535,4 +561,8 @@ mod std {
535
561
pub use core:: clone; // deriving(Clone)
536
562
pub use core:: cmp; // deriving(Eq, Ord, etc.)
537
563
pub use hash; // deriving(Hash)
564
+
565
+ pub mod collections {
566
+ pub use MutableSeq ;
567
+ }
538
568
}
0 commit comments