(
zelf: &Py<Self>,
needle: &PyObject,
value: PyObjectRef,
vm: &VirtualMachine,
)
| 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>, |
nothing calls this directly
no test coverage detected