Skip to main content

AlignedBuffer

Struct AlignedBuffer 

Source
pub struct AlignedBuffer<T> { /* private fields */ }
Expand description

A buffer with guaranteed SIMD-friendly alignment

This buffer ensures that data is aligned to the specified boundary, which is critical for efficient SIMD operations. It uses Rust’s global allocator with custom alignment.

Implementations§

Source§

impl<T> AlignedBuffer<T>

Source

pub fn new(capacity: usize, align: usize) -> Result<Self>

Create a new aligned buffer with the specified capacity and alignment

§Arguments
  • capacity - Number of elements to allocate
  • align - Alignment in bytes (must be a power of 2)
§Errors

Returns an error if:

  • Alignment is not a power of 2
  • Alignment is less than the natural alignment of T
  • Memory allocation fails
Source

pub fn zeros(capacity: usize, align: usize) -> Result<Self>
where T: Default + Copy,

Create a new aligned buffer filled with zeros

§Arguments
  • capacity - Number of elements to allocate
  • align - Alignment in bytes (must be a power of 2)
§Errors

Returns an error if allocation fails

Source

pub const fn len(&self) -> usize

Get the number of elements in the buffer

Source

pub const fn is_empty(&self) -> bool

Check if the buffer is empty

Source

pub const fn alignment(&self) -> usize

Get the alignment of the buffer

Source

pub fn as_ptr(&self) -> *const T

Get a raw pointer to the buffer

Source

pub fn as_mut_ptr(&mut self) -> *mut T

Get a mutable raw pointer to the buffer

Source

pub fn as_slice(&self) -> &[T]

Get the buffer as a slice

Source

pub fn as_mut_slice(&mut self) -> &mut [T]

Get the buffer as a mutable slice

Source

pub fn copy_from_slice(&mut self, src: &[T]) -> Result<()>
where T: Copy,

Copy data from a slice into the buffer

§Errors

Returns an error if the slice length doesn’t match the buffer capacity

Source

pub fn strided_view(&self, stride: usize) -> Result<StridedView<'_, T>>

Create a strided view of the buffer

This is useful for accessing every nth element without copying data.

§Arguments
  • stride - Step size between elements
§Errors

Returns an error if stride is 0

Trait Implementations§

Source§

impl<T> Drop for AlignedBuffer<T>

Source§

fn drop(&mut self)

Executes the destructor for this type. Read more
Source§

impl<T: Send> Send for AlignedBuffer<T>

Source§

impl<T: Sync> Sync for AlignedBuffer<T>

Auto Trait Implementations§

§

impl<T> Freeze for AlignedBuffer<T>

§

impl<T> RefUnwindSafe for AlignedBuffer<T>
where T: RefUnwindSafe,

§

impl<T> Unpin for AlignedBuffer<T>

§

impl<T> UnsafeUnpin for AlignedBuffer<T>

§

impl<T> UnwindSafe for AlignedBuffer<T>
where T: RefUnwindSafe,

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.