| 134 | } |
| 135 | |
| 136 | fn main() { |
| 137 | basic(); |
| 138 | iter(); |
| 139 | |
| 140 | fn basic() { |
| 141 | let mut d = Deque::new(4); |
| 142 | let _r1 = d.add_front(1); |
| 143 | let _r2 = d.add_front(2); |
| 144 | let _r3 = d.add_rear(3); |
| 145 | let _r4 = d.add_rear(4); |
| 146 | if let Err(error) = d.add_front(5) { |
| 147 | println!("add_front error: {error}"); |
| 148 | } |
| 149 | println!("{:?}", d); |
| 150 | |
| 151 | match d.remove_rear() { |
| 152 | Some(data) => println!("remove rear data {data}"), |
| 153 | None => println!("empty deque"), |
| 154 | } |
| 155 | match d.remove_front() { |
| 156 | Some(data) => println!("remove front data {data}"), |
| 157 | None => println!("empty deque"), |
| 158 | } |
| 159 | println!("empty: {}, len: {}", d.is_empty(), d.len()); |
| 160 | println!("full: {}, {:?}", d.is_full(), d); |
| 161 | |
| 162 | d.clear(); |
| 163 | println!("{:?}", d); |
| 164 | } |
| 165 | |
| 166 | fn iter() { |
| 167 | let mut d = Deque::new(4); |
| 168 | let _r1 = d.add_front(1); |
| 169 | let _r2 = d.add_front(2); |
| 170 | let _r3 = d.add_rear(3); |
| 171 | let _r4 = d.add_rear(4); |
| 172 | |
| 173 | let sum1 = d.iter().sum::<i32>(); |
| 174 | let mut addend = 0; |
| 175 | for item in d.iter_mut() { |
| 176 | *item += 1; |
| 177 | addend += 1; |
| 178 | } |
| 179 | let sum2 = d.iter().sum::<i32>(); |
| 180 | println!("{sum1} + {addend} = {sum2}"); |
| 181 | |
| 182 | assert_eq!(14, d.into_iter().sum::<i32>()); |
| 183 | } |
| 184 | } |