@@ -45,6 +45,23 @@ impl<T> Deque<T> {
45
45
46
46
fn peek_front ( & self ) -> & self /T { get ( self . elts , self . lo ) }
47
47
fn peek_back ( & self ) -> & self /T { get ( self . elts , self . hi - 1 u) }
48
+
49
+ fn pop_front ( & mut self ) -> T {
50
+ let mut result = self . elts [ self . lo ] . swap_unwrap ( ) ;
51
+ self . lo = ( self . lo + 1 u) % self . elts . len ( ) ;
52
+ self . nelts -= 1 u;
53
+ result
54
+ }
55
+
56
+ fn pop_back ( & mut self ) -> T {
57
+ if self . hi == 0 u {
58
+ self . hi = self . elts . len ( ) - 1 u;
59
+ } else { self . hi -= 1 u; }
60
+ let mut result = self . elts [ self . hi ] . swap_unwrap ( ) ;
61
+ self . elts [ self . hi ] = None ;
62
+ self . nelts -= 1 u;
63
+ result
64
+ }
48
65
}
49
66
50
67
impl < T : Copy > Deque < T > {
@@ -73,24 +90,6 @@ impl<T: Copy> Deque<T> {
73
90
self . nelts += 1 u;
74
91
}
75
92
76
- fn pop_front ( & mut self ) -> T {
77
- let t = { * get ( self . elts , self . lo ) } ;
78
- self . elts [ self . lo ] = None ;
79
- self . lo = ( self . lo + 1 u) % self . elts . len ( ) ;
80
- self . nelts -= 1 u;
81
- t
82
- }
83
-
84
- fn pop_back ( & mut self ) -> T {
85
- if self . hi == 0 u {
86
- self . hi = self . elts . len ( ) - 1 u;
87
- } else { self . hi -= 1 u; }
88
- let t = { * get ( self . elts , self . hi ) } ;
89
- self . elts [ self . hi ] = None ;
90
- self . nelts -= 1 u;
91
- t
92
- }
93
-
94
93
fn get ( & self , i : int ) -> T {
95
94
let idx = ( self . lo + ( i as uint ) ) % self . elts . len ( ) ;
96
95
* get ( self . elts , idx)
0 commit comments