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

Method _readinto

crates/vm/src/stdlib/_io.rs:738–762  ·  view source on GitHub ↗
(
            zelf: PyObjectRef,
            buf_obj: PyObjectRef,
            method: &str,
            vm: &VirtualMachine,
        )

Source from the content-addressed store, hash-verified

736 }
737
738 fn _readinto(
739 zelf: PyObjectRef,
740 buf_obj: PyObjectRef,
741 method: &str,
742 vm: &VirtualMachine,
743 ) -> PyResult<usize> {
744 let b = ArgMemoryBuffer::try_from_borrowed_object(vm, &buf_obj)?;
745 let l = b.len();
746 let data = vm.call_method(&zelf, method, (l,))?;
747 if data.is(&buf_obj) {
748 return Ok(l);
749 }
750 let mut buf = b.borrow_buf_mut();
751 let data = ArgBytesLike::try_from_object(vm, data)?;
752 let data = data.borrow_buf();
753 match buf.get_mut(..data.len()) {
754 Some(slice) => {
755 slice.copy_from_slice(&data);
756 Ok(data.len())
757 }
758 None => {
759 Err(vm.new_value_error("readinto: buffer and read data have different lengths"))
760 }
761 }
762 }
763 #[pymethod]
764 fn readinto(zelf: PyObjectRef, b: PyObjectRef, vm: &VirtualMachine) -> PyResult<usize> {
765 Self::_readinto(zelf, b, "read", vm)

Callers

nothing calls this directly

Calls 7

isMethod · 0.80
get_mutMethod · 0.80
ErrClass · 0.50
lenMethod · 0.45
call_methodMethod · 0.45
borrow_buf_mutMethod · 0.45
borrow_bufMethod · 0.45

Tested by

no test coverage detected