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

Method setitem_inner

crates/stdlib/src/array.rs:998–1033  ·  view source on GitHub ↗
(
            zelf: &Py<Self>,
            needle: &PyObject,
            value: PyObjectRef,
            vm: &VirtualMachine,
        )

Source from the content-addressed store, hash-verified

996 }
997
998 fn setitem_inner(
999 zelf: &Py<Self>,
1000 needle: &PyObject,
1001 value: PyObjectRef,
1002 vm: &VirtualMachine,
1003 ) -> PyResult<()> {
1004 match SequenceIndex::try_from_borrowed_object(vm, needle, "array")? {
1005 SequenceIndex::Int(i) => zelf.write().setitem_by_index(i, value, vm),
1006 SequenceIndex::Slice(slice) => {
1007 let cloned;
1008 let guard;
1009 let items = if zelf.is(&value) {
1010 cloned = zelf.read().clone();
1011 &cloned
1012 } else {
1013 match value.downcast_ref::<Self>() {
1014 Some(array) => {
1015 guard = array.read();
1016 &*guard
1017 }
1018 None => {
1019 return Err(vm.new_type_error(format!(
1020 "can only assign array (not \"{}\") to array slice",
1021 value.class()
1022 )));
1023 }
1024 }
1025 };
1026 if let Ok(mut w) = zelf.try_resizable(vm) {
1027 w.setitem_by_slice(slice, items, vm)
1028 } else {
1029 zelf.write().setitem_by_slice_no_resize(slice, items, vm)
1030 }
1031 }
1032 }
1033 }
1034
1035 fn __setitem__(
1036 zelf: &Py<Self>,

Callers

nothing calls this directly

Calls 9

isMethod · 0.80
try_resizableMethod · 0.80
ErrClass · 0.50
setitem_by_indexMethod · 0.45
writeMethod · 0.45
cloneMethod · 0.45
readMethod · 0.45
setitem_by_sliceMethod · 0.45

Tested by

no test coverage detected