| 315 | } |
| 316 | |
| 317 | fn _mul(&self, n: isize, vm: &VirtualMachine) -> PyResult<VecDeque<PyObjectRef>> { |
| 318 | let deque = self.borrow_deque(); |
| 319 | let n = vm.check_repeat_or_overflow_error(deque.len(), n)?; |
| 320 | let mul_len = n * deque.len(); |
| 321 | let iter = deque.iter().cycle().take(mul_len); |
| 322 | let skipped = self |
| 323 | .maxlen |
| 324 | .and_then(|maxlen| mul_len.checked_sub(maxlen)) |
| 325 | .unwrap_or(0); |
| 326 | |
| 327 | let deque = iter.skip(skipped).cloned().collect(); |
| 328 | Ok(deque) |
| 329 | } |
| 330 | |
| 331 | fn __mul__(&self, n: isize, vm: &VirtualMachine) -> PyResult<Self> { |
| 332 | let deque = self._mul(n, vm)?; |