MCPcopy Index your code
hub / github.com/RustPython/RustPython / _extend

Method _extend

crates/vm/src/stdlib/_collections.rs:124–140  ·  view source on GitHub ↗
(&self, iter: &PyObject, vm: &VirtualMachine)

Source from the content-addressed store, hash-verified

122 }
123
124 fn _extend(&self, iter: &PyObject, vm: &VirtualMachine) -> PyResult<()> {
125 self.state.fetch_add(1);
126 let max_len = self.maxlen;
127 let mut elements: Vec<PyObjectRef> = iter.try_to_value(vm)?;
128 if let Some(max_len) = max_len {
129 if max_len > elements.len() {
130 let mut deque = self.borrow_deque_mut();
131 let drain_until = deque.len().saturating_sub(max_len - elements.len());
132 deque.drain(..drain_until);
133 } else {
134 self.borrow_deque_mut().clear();
135 elements.drain(..(elements.len() - max_len));
136 }
137 }
138 self.borrow_deque_mut().extend(elements);
139 Ok(())
140 }
141
142 #[pymethod]
143 fn extendleft(&self, iter: PyObjectRef, vm: &VirtualMachine) -> PyResult<()> {

Callers 1

extendMethod · 0.80

Calls 6

try_to_valueMethod · 0.80
borrow_deque_mutMethod · 0.80
lenMethod · 0.45
drainMethod · 0.45
clearMethod · 0.45
extendMethod · 0.45

Tested by

no test coverage detected