@@ -42,11 +42,14 @@ impl<T> Deque<T> {
42
42
Deque { nelts: 0 , lo: 0 , hi: 0 ,
43
43
elts: vec:: from_fn( initial_capacity, |_| None ) }
44
44
}
45
+
46
+ fn peek_front ( & self ) -> & self /T { get ( self . elts , self . lo ) }
47
+ fn peek_back ( & self ) -> & self /T { get ( self . elts , self . hi - 1 u) }
45
48
}
46
49
47
50
impl < T : Copy > Deque < T > {
48
51
fn add_front ( & mut self , t : T ) {
49
- let oldlo: uint = self . lo ;
52
+ let oldlo = self . lo ;
50
53
if self . lo == 0 u {
51
54
self . lo = self . elts . len ( ) - 1 u;
52
55
} else { self . lo -= 1 u; }
@@ -88,10 +91,6 @@ impl<T: Copy> Deque<T> {
88
91
t
89
92
}
90
93
91
- fn peek_front ( & self ) -> T { * get ( self . elts , self . lo ) }
92
-
93
- fn peek_back ( & self ) -> T { * get ( self . elts , self . hi - 1 u) }
94
-
95
94
fn get ( & self , i : int ) -> T {
96
95
let idx = ( self . lo + ( i as uint ) ) % self . elts . len ( ) ;
97
96
* get ( self . elts , idx)
@@ -122,52 +121,51 @@ fn get<T>(elts: &r/[Option<T>], i: uint) -> &r/T {
122
121
123
122
#[ cfg( test) ]
124
123
mod tests {
125
- use core:: prelude:: * ;
126
124
use super :: * ;
127
125
128
126
#[ test]
129
127
fn test_simple ( ) {
130
128
let mut d = Deque :: new ( ) ;
131
- assert ( d. len ( ) == 0 u) ;
129
+ assert d. len ( ) == 0 u;
132
130
d. add_front ( 17 ) ;
133
131
d. add_front ( 42 ) ;
134
132
d. add_back ( 137 ) ;
135
- assert ( d. len ( ) == 3 u) ;
133
+ assert d. len ( ) == 3 u;
136
134
d. add_back ( 137 ) ;
137
- assert ( d. len ( ) == 4 u) ;
135
+ assert d. len ( ) == 4 u;
138
136
log ( debug, d. peek_front ( ) ) ;
139
- assert ( d. peek_front ( ) == 42 ) ;
137
+ assert * d. peek_front ( ) == 42 ;
140
138
log ( debug, d. peek_back ( ) ) ;
141
- assert ( d. peek_back ( ) == 137 ) ;
139
+ assert * d. peek_back ( ) == 137 ;
142
140
let mut i: int = d. pop_front ( ) ;
143
141
log ( debug, i) ;
144
- assert ( i == 42 ) ;
142
+ assert i == 42 ;
145
143
i = d. pop_back ( ) ;
146
144
log ( debug, i) ;
147
- assert ( i == 137 ) ;
145
+ assert i == 137 ;
148
146
i = d. pop_back ( ) ;
149
147
log ( debug, i) ;
150
- assert ( i == 137 ) ;
148
+ assert i == 137 ;
151
149
i = d. pop_back ( ) ;
152
150
log ( debug, i) ;
153
- assert ( i == 17 ) ;
154
- assert ( d. len ( ) == 0 u) ;
151
+ assert i == 17 ;
152
+ assert d. len ( ) == 0 u;
155
153
d. add_back ( 3 ) ;
156
- assert ( d. len ( ) == 1 u) ;
154
+ assert d. len ( ) == 1 u;
157
155
d. add_front ( 2 ) ;
158
- assert ( d. len ( ) == 2 u) ;
156
+ assert d. len ( ) == 2 u;
159
157
d. add_back ( 4 ) ;
160
- assert ( d. len ( ) == 3 u) ;
158
+ assert d. len ( ) == 3 u;
161
159
d. add_front ( 1 ) ;
162
- assert ( d. len ( ) == 4 u) ;
160
+ assert d. len ( ) == 4 u;
163
161
log ( debug, d. get ( 0 ) ) ;
164
162
log ( debug, d. get ( 1 ) ) ;
165
163
log ( debug, d. get ( 2 ) ) ;
166
164
log ( debug, d. get ( 3 ) ) ;
167
- assert ( d. get ( 0 ) == 1 ) ;
168
- assert ( d. get ( 1 ) == 2 ) ;
169
- assert ( d. get ( 2 ) == 3 ) ;
170
- assert ( d. get ( 3 ) == 4 ) ;
165
+ assert d. get ( 0 ) == 1 ;
166
+ assert d. get ( 1 ) == 2 ;
167
+ assert d. get ( 2 ) == 3 ;
168
+ assert d. get ( 3 ) == 4 ;
171
169
}
172
170
173
171
#[ test]
@@ -178,58 +176,58 @@ mod tests {
178
176
let d: @int = @175 ;
179
177
180
178
let mut deq = Deque :: new ( ) ;
181
- assert ( deq. len ( ) == 0 u ) ;
179
+ assert deq. len ( ) == 0 ;
182
180
deq. add_front ( a) ;
183
181
deq. add_front ( b) ;
184
182
deq. add_back ( c) ;
185
- assert ( deq. len ( ) == 3 u ) ;
183
+ assert deq. len ( ) == 3 ;
186
184
deq. add_back ( d) ;
187
- assert ( deq. len ( ) == 4 u ) ;
188
- assert ( deq. peek_front ( ) == b) ;
189
- assert ( deq. peek_back ( ) == d) ;
190
- assert ( deq. pop_front ( ) == b) ;
191
- assert ( deq. pop_back ( ) == d) ;
192
- assert ( deq. pop_back ( ) == c) ;
193
- assert ( deq. pop_back ( ) == a) ;
194
- assert ( deq. len ( ) == 0 u ) ;
185
+ assert deq. len ( ) == 4 ;
186
+ assert * deq. peek_front ( ) == b;
187
+ assert * deq. peek_back ( ) == d;
188
+ assert deq. pop_front ( ) == b;
189
+ assert deq. pop_back ( ) == d;
190
+ assert deq. pop_back ( ) == c;
191
+ assert deq. pop_back ( ) == a;
192
+ assert deq. len ( ) == 0 ;
195
193
deq. add_back ( c) ;
196
- assert ( deq. len ( ) == 1 u ) ;
194
+ assert deq. len ( ) == 1 ;
197
195
deq. add_front ( b) ;
198
- assert ( deq. len ( ) == 2 u ) ;
196
+ assert deq. len ( ) == 2 ;
199
197
deq. add_back ( d) ;
200
- assert ( deq. len ( ) == 3 u ) ;
198
+ assert deq. len ( ) == 3 ;
201
199
deq. add_front ( a) ;
202
- assert ( deq. len ( ) == 4 u ) ;
203
- assert ( deq. get ( 0 ) == a) ;
204
- assert ( deq. get ( 1 ) == b) ;
205
- assert ( deq. get ( 2 ) == c) ;
206
- assert ( deq. get ( 3 ) == d) ;
200
+ assert deq. len ( ) == 4 ;
201
+ assert deq. get ( 0 ) == a;
202
+ assert deq. get ( 1 ) == b;
203
+ assert deq. get ( 2 ) == c;
204
+ assert deq. get ( 3 ) == d;
207
205
}
208
206
209
207
fn test_parameterized < T : Copy Eq Durable > ( a : T , b : T , c : T , d : T ) {
210
208
let mut deq = Deque :: new ( ) ;
211
- assert ( deq. len ( ) == 0 u ) ;
209
+ assert deq. len ( ) == 0 ;
212
210
deq. add_front ( a) ;
213
211
deq. add_front ( b) ;
214
212
deq. add_back ( c) ;
215
- assert ( deq. len ( ) == 3 u ) ;
213
+ assert deq. len ( ) == 3 ;
216
214
deq. add_back ( d) ;
217
- assert ( deq. len ( ) == 4 u ) ;
218
- assert deq. peek_front ( ) == b;
219
- assert deq. peek_back ( ) == d;
215
+ assert deq. len ( ) == 4 ;
216
+ assert * deq. peek_front ( ) == b;
217
+ assert * deq. peek_back ( ) == d;
220
218
assert deq. pop_front ( ) == b;
221
219
assert deq. pop_back ( ) == d;
222
220
assert deq. pop_back ( ) == c;
223
221
assert deq. pop_back ( ) == a;
224
- assert ( deq. len ( ) == 0 u ) ;
222
+ assert deq. len ( ) == 0 ;
225
223
deq. add_back ( c) ;
226
- assert ( deq. len ( ) == 1 u ) ;
224
+ assert deq. len ( ) == 1 ;
227
225
deq. add_front ( b) ;
228
- assert ( deq. len ( ) == 2 u ) ;
226
+ assert deq. len ( ) == 2 ;
229
227
deq. add_back ( d) ;
230
- assert ( deq. len ( ) == 3 u ) ;
228
+ assert deq. len ( ) == 3 ;
231
229
deq. add_front ( a) ;
232
- assert ( deq. len ( ) == 4 u ) ;
230
+ assert deq. len ( ) == 4 ;
233
231
assert deq. get ( 0 ) == a;
234
232
assert deq. get ( 1 ) == b;
235
233
assert deq. get ( 2 ) == c;
0 commit comments