| 141 | |
| 142 | #[pymethod] |
| 143 | fn extendleft(&self, iter: PyObjectRef, vm: &VirtualMachine) -> PyResult<()> { |
| 144 | let max_len = self.maxlen; |
| 145 | let mut elements: Vec<PyObjectRef> = iter.try_to_value(vm)?; |
| 146 | elements.reverse(); |
| 147 | |
| 148 | if let Some(max_len) = max_len { |
| 149 | if max_len > elements.len() { |
| 150 | let mut deque = self.borrow_deque_mut(); |
| 151 | let truncate_until = max_len - elements.len(); |
| 152 | deque.truncate(truncate_until); |
| 153 | } else { |
| 154 | self.borrow_deque_mut().clear(); |
| 155 | elements.truncate(max_len); |
| 156 | } |
| 157 | } |
| 158 | let mut created = VecDeque::from(elements); |
| 159 | let mut borrowed = self.borrow_deque_mut(); |
| 160 | created.append(&mut borrowed); |
| 161 | core::mem::swap(&mut created, &mut borrowed); |
| 162 | Ok(()) |
| 163 | } |
| 164 | |
| 165 | #[pymethod] |
| 166 | fn index( |