pub fn frombuffer<T: Clone + Default>(
buffer: &[u8],
dtype_size: usize,
count: isize,
offset: usize,
) -> Result<Array<T>>Expand description
Create an array from a raw buffer
§Parameters
buffer- The raw buffer as a slice of bytesdtype_size- Size of each element in bytes (e.g., 4 for i32, 8 for f64)count- Number of elements to read from buffer (-1 means read all available)offset- Start reading from this position in the buffer (in bytes)
§Returns
A 1D array created from the buffer data
§Examples
use numrs2::prelude::*;
// Create array from i32 buffer
let data: Vec<i32> = vec![1, 2, 3, 4, 5];
let buffer = unsafe {
std::slice::from_raw_parts(
data.as_ptr() as *const u8,
data.len() * std::mem::size_of::<i32>()
)
};
let result = frombuffer::<i32>(buffer, std::mem::size_of::<i32>(), -1, 0).expect("operation should succeed");
assert_eq!(result.to_vec(), vec![1, 2, 3, 4, 5]);
// Create array from f64 buffer with count limit
let data: Vec<f64> = vec![1.0, 2.0, 3.0, 4.0, 5.0];
let buffer = unsafe {
std::slice::from_raw_parts(
data.as_ptr() as *const u8,
data.len() * std::mem::size_of::<f64>()
)
};
let result = frombuffer::<f64>(buffer, std::mem::size_of::<f64>(), 3, 0).expect("operation should succeed");
assert_eq!(result.to_vec(), vec![1.0, 2.0, 3.0]);