(&mut self, i: usize)
| 113 | } |
| 114 | |
| 115 | fn remove_from_list(&mut self, i: usize) { |
| 116 | let (prev, next) = { |
| 117 | let entry = self.entries.get_mut(i).unwrap(); |
| 118 | (entry.prev, entry.next) |
| 119 | }; |
| 120 | |
| 121 | match (prev, next) { |
| 122 | // 数据项在缓存中间 |
| 123 | (Some(j), Some(k)) => { |
| 124 | let head = &mut self.entries[j]; |
| 125 | head.next = next; |
| 126 | let next = &mut self.entries[k]; |
| 127 | next.prev = prev; |
| 128 | }, |
| 129 | // 数据项在缓存末尾 |
| 130 | (Some(j), None) => { |
| 131 | let head = &mut self.entries[j]; |
| 132 | head.next = None; |
| 133 | self.tail = prev; |
| 134 | }, |
| 135 | // 数据项在缓存头部 |
| 136 | _ => { |
| 137 | if self.len() > 1 { |
| 138 | let head = &mut self.entries[0]; |
| 139 | head.next = None; |
| 140 | let next = &mut self.entries[1]; |
| 141 | next.prev = None; |
| 142 | } |
| 143 | }, |
| 144 | } |
| 145 | } |
| 146 | |
| 147 | // 确保容量足够,满了就移除末尾的元素 |
| 148 | fn ensure_room(&mut self) { |
no test coverage detected