nalgebra::base::allocator

Trait Reallocator

Source
pub trait Reallocator<T: Scalar, RFrom: Dim, CFrom: Dim, RTo: Dim, CTo: Dim>: Allocator<RFrom, CFrom> + Allocator<RTo, CTo> {
    // Required method
    unsafe fn reallocate_copy(
        nrows: RTo,
        ncols: CTo,
        buf: <Self as Allocator<RFrom, CFrom>>::Buffer<T>,
    ) -> <Self as Allocator<RTo, CTo>>::BufferUninit<T>;
}
Expand description

A matrix reallocator. Changes the size of the memory buffer that initially contains (RFrom × CFrom) elements to a smaller or larger size (RTo, CTo).

Required Methods§

Source

unsafe fn reallocate_copy( nrows: RTo, ncols: CTo, buf: <Self as Allocator<RFrom, CFrom>>::Buffer<T>, ) -> <Self as Allocator<RTo, CTo>>::BufferUninit<T>

Reallocates a buffer of shape (RTo, CTo), possibly reusing a previously allocated buffer buf. Data stored by buf are linearly copied to the output:

§Safety

The following invariants must be respected by the implementors of this method:

  • The copy is performed as if both were just arrays (without taking into account the matrix structure).
  • If the underlying buffer is being shrunk, the removed elements must not be dropped by this method. Dropping them is the responsibility of the caller.

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§

Source§

impl<T: Scalar, RFrom, CFrom, const RTO: usize, const CTO: usize> Reallocator<T, RFrom, CFrom, Const<RTO>, Const<CTO>> for DefaultAllocator
where RFrom: Dim, CFrom: Dim, Self: Allocator<RFrom, CFrom>,