11#[ derive( Debug ) ]
22struct Deque < T > {
3- deque : Vec < T >
3+ deque : Vec < T > ,
44}
55
66impl < T > Deque < T > {
7- fn new ( ) -> Self {
8- Deque { deque : Vec :: new ( ) }
9- }
7+ fn new ( ) -> Self {
8+ Deque { deque : Vec :: new ( ) }
9+ }
1010
11- fn add_last ( & mut self , item : T ) {
12- self . deque . push ( item)
13- }
11+ fn add_last ( & mut self , item : T ) {
12+ self . deque . push ( item)
13+ }
1414
15- fn remove_last ( & mut self ) -> Option < T > {
16- self . deque . pop ( )
17- }
15+ fn remove_last ( & mut self ) -> Option < T > {
16+ self . deque . pop ( )
17+ }
1818
19- fn add_first ( & mut self , item : T ) {
20- self . deque . insert ( 0 , item)
21- }
19+ fn add_first ( & mut self , item : T ) {
20+ self . deque . insert ( 0 , item)
21+ }
2222
23- fn remove_first ( & mut self ) -> T {
24- self . deque . remove ( 0 )
25- }
23+ fn remove_first ( & mut self ) -> T {
24+ self . deque . remove ( 0 )
25+ }
2626
27- fn length ( & self ) -> usize {
28- self . deque . len ( )
29- }
27+ fn length ( & self ) -> usize {
28+ self . deque . len ( )
29+ }
3030
31- fn is_empty ( & self ) -> bool {
32- self . deque . is_empty ( )
33- }
31+ fn is_empty ( & self ) -> bool {
32+ self . deque . is_empty ( )
33+ }
3434
35- fn peek ( & self ) -> Option < & T > {
36- self . deque . first ( )
37- }
35+ fn peek ( & self ) -> Option < & T > {
36+ self . deque . first ( )
37+ }
3838
39- fn peek_last ( & self ) -> Option < & T > {
40- self . deque . last ( )
41- }
39+ fn peek_last ( & self ) -> Option < & T > {
40+ self . deque . last ( )
41+ }
4242}
4343
44- fn main ( ) {
45- let mut deque: Deque < i32 > = Deque :: < i32 > :: new ( ) ;
46- deque. add_first ( 1 ) ;
47- deque. add_last ( 2 ) ;
48- deque. add_first ( 3 ) ;
49- println ! ( "{:?}" , deque) ;
50- deque. remove_last ( ) ;
51- deque. remove_first ( ) ;
52- println ! ( "{:?}" , deque) ;
53- println ! ( "length: {:?}, is empty? {:?}" , deque. length( ) , deque. is_empty( ) ) ;
54- deque. add_first ( 1 ) ;
55- deque. add_last ( 2 ) ;
56- deque. add_first ( 3 ) ;
57- println ! ( "{:?}, {:?}" , deque. peek( ) , deque. peek_last( ) ) ;
58- }
44+ fn main ( ) {
45+ let mut deque: Deque < i32 > = Deque :: < i32 > :: new ( ) ;
46+ deque. add_first ( 1 ) ;
47+ deque. add_last ( 2 ) ;
48+ deque. add_first ( 3 ) ;
49+ println ! ( "{:?}" , deque) ;
50+ deque. remove_last ( ) ;
51+ deque. remove_first ( ) ;
52+ println ! ( "{:?}" , deque) ;
53+ println ! (
54+ "length: {:?}, is empty? {:?}" ,
55+ deque. length( ) ,
56+ deque. is_empty( )
57+ ) ;
58+ deque. add_first ( 1 ) ;
59+ deque. add_last ( 2 ) ;
60+ deque. add_first ( 3 ) ;
61+ println ! ( "{:?}, {:?}" , deque. peek( ) , deque. peek_last( ) ) ;
62+ }
0 commit comments