Skip to main content

frombuffer

Function frombuffer 

Source
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 bytes
  • dtype_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]);