nalgebra::base::allocator

Trait Allocator

Source
pub trait Allocator<T, R: Dim, C: Dim = U1>: Any + Sized {
    type Buffer: StorageMut<T, R, C> + IsContiguous + Clone + Debug;
    type BufferUninit: RawStorageMut<MaybeUninit<T>, R, C> + IsContiguous;

    // Required methods
    fn allocate_uninit(nrows: R, ncols: C) -> Self::BufferUninit;
    unsafe fn assume_init(uninit: Self::BufferUninit) -> Self::Buffer;
    fn allocate_from_iterator<I: IntoIterator<Item = T>>(
        nrows: R,
        ncols: C,
        iter: I,
    ) -> Self::Buffer;
}
Expand description

A matrix allocator of a memory buffer that may contain R::to_usize() * C::to_usize() elements of type T.

An allocator is said to be: − static: if R and C both implement DimName. − dynamic: if either one (or both) of R or C is equal to Dynamic.

Every allocator must be both static and dynamic. Though not all implementations may share the same Buffer type.

Required Associated Types§

Source

type Buffer: StorageMut<T, R, C> + IsContiguous + Clone + Debug

The type of buffer this allocator can instanciate.

Source

type BufferUninit: RawStorageMut<MaybeUninit<T>, R, C> + IsContiguous

The type of buffer with uninitialized components this allocator can instanciate.

Required Methods§

Source

fn allocate_uninit(nrows: R, ncols: C) -> Self::BufferUninit

Allocates a buffer with the given number of rows and columns without initializing its content.

Source

unsafe fn assume_init(uninit: Self::BufferUninit) -> Self::Buffer

Assumes a data buffer to be initialized.

§Safety

The user must make sure that every single entry of the buffer has been initialized, or Undefined Behavior will immediately occur.

Source

fn allocate_from_iterator<I: IntoIterator<Item = T>>( nrows: R, ncols: C, iter: I, ) -> Self::Buffer

Allocates a buffer initialized with the content of the given iterator.

Dyn Compatibility§

This trait is not dyn compatible.

In older versions of Rust, dyn compatibility was called "object safety", so this trait is not object safe.

Implementors§