MCPcopy Create free account
hub / github.com/TimMisiak/dbgrs / read_memory_array

Function read_memory_array

src/memory.rs:11–31  ·  view source on GitHub ↗
(
    source: &dyn MemorySource,
    address: u64,
    max_count: usize,
)

Source from the content-addressed store, hash-verified

9}
10
11pub fn read_memory_array<T: Sized + Default>(
12 source: &dyn MemorySource,
13 address: u64,
14 max_count: usize,
15) -> Result<Vec<T>, &'static str> {
16 let element_size = ::core::mem::size_of::<T>();
17 let max_bytes = max_count * element_size;
18 let raw_bytes = source.read_raw_memory(address, max_bytes);
19 let mut data: Vec<T> = Vec::new();
20 let mut offset: usize = 0;
21 while offset + element_size <= raw_bytes.len() {
22 let mut item: T = T::default();
23 let dst: *mut u8 = unsafe { std::mem::transmute(&mut item) };
24 let src = &raw_bytes[offset] as *const u8;
25 unsafe { std::ptr::copy_nonoverlapping(src, dst, element_size) };
26 data.push(item);
27 offset += element_size;
28 }
29
30 Ok(data)
31}
32
33pub fn read_memory_full_array<T: Sized + Default>(
34 source: &dyn MemorySource,

Callers 1

read_memory_full_arrayFunction · 0.85

Calls 1

read_raw_memoryMethod · 0.80

Tested by

no test coverage detected