Struct nalgebra::base::VecStorage
source · #[repr(C)]pub struct VecStorage<T, R: Dim, C: Dim> { /* private fields */ }
Expand description
A Vec-based matrix data storage. It may be dynamically-sized.
Implementations§
source§impl<T, R: Dim, C: Dim> VecStorage<T, R, C>
impl<T, R: Dim, C: Dim> VecStorage<T, R, C>
sourcepub fn new(nrows: R, ncols: C, data: Vec<T>) -> Self
pub fn new(nrows: R, ncols: C, data: Vec<T>) -> Self
Creates a new dynamic matrix data storage from the given vector and shape.
sourcepub unsafe fn as_vec_mut(&mut self) -> &mut Vec<T>
pub unsafe fn as_vec_mut(&mut self) -> &mut Vec<T>
The underlying mutable data storage.
This is unsafe because this may cause UB if the size of the vector is changed by the user.
Trait Implementations§
source§impl<T: Clone, R: Clone + Dim, C: Clone + Dim> Clone for VecStorage<T, R, C>
impl<T: Clone, R: Clone + Dim, C: Clone + Dim> Clone for VecStorage<T, R, C>
source§fn clone(&self) -> VecStorage<T, R, C>
fn clone(&self) -> VecStorage<T, R, C>
1.0.0 · source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source
. Read moresource§impl<'a, T: 'a + Copy, R: Dim> Extend<&'a T> for VecStorage<T, R, Dynamic>
impl<'a, T: 'a + Copy, R: Dim> Extend<&'a T> for VecStorage<T, R, Dynamic>
source§fn extend<I: IntoIterator<Item = &'a T>>(&mut self, iter: I)
fn extend<I: IntoIterator<Item = &'a T>>(&mut self, iter: I)
Extends the number of columns of the VecStorage
with elements
from the given iterator.
Panics
This function panics if the number of elements yielded by the
given iterator is not a multiple of the number of rows of the
VecStorage
.
source§fn extend_one(&mut self, item: A)
fn extend_one(&mut self, item: A)
extend_one
)source§fn extend_reserve(&mut self, additional: usize)
fn extend_reserve(&mut self, additional: usize)
extend_one
)source§impl<T, R, RV, SV> Extend<Matrix<T, RV, Const<1>, SV>> for VecStorage<T, R, Dynamic>where
T: Scalar,
R: Dim,
RV: Dim,
SV: Storage<T, RV>,
ShapeConstraint: SameNumberOfRows<R, RV>,
impl<T, R, RV, SV> Extend<Matrix<T, RV, Const<1>, SV>> for VecStorage<T, R, Dynamic>where T: Scalar, R: Dim, RV: Dim, SV: Storage<T, RV>, ShapeConstraint: SameNumberOfRows<R, RV>,
source§fn extend<I: IntoIterator<Item = Vector<T, RV, SV>>>(&mut self, iter: I)
fn extend<I: IntoIterator<Item = Vector<T, RV, SV>>>(&mut self, iter: I)
Extends the number of columns of the VecStorage
with vectors
from the given iterator.
Panics
This function panics if the number of rows of each Vector
yielded by the iterator is not equal to the number of rows
of this VecStorage
.
source§fn extend_one(&mut self, item: A)
fn extend_one(&mut self, item: A)
extend_one
)source§fn extend_reserve(&mut self, additional: usize)
fn extend_reserve(&mut self, additional: usize)
extend_one
)source§impl<T> Extend<T> for VecStorage<T, Dynamic, U1>
impl<T> Extend<T> for VecStorage<T, Dynamic, U1>
source§fn extend<I: IntoIterator<Item = T>>(&mut self, iter: I)
fn extend<I: IntoIterator<Item = T>>(&mut self, iter: I)
Extends the number of rows of the VecStorage
with elements
from the given iterator.
source§fn extend_one(&mut self, item: A)
fn extend_one(&mut self, item: A)
extend_one
)source§fn extend_reserve(&mut self, additional: usize)
fn extend_reserve(&mut self, additional: usize)
extend_one
)source§impl<T, R: Dim> Extend<T> for VecStorage<T, R, Dynamic>
impl<T, R: Dim> Extend<T> for VecStorage<T, R, Dynamic>
source§fn extend<I: IntoIterator<Item = T>>(&mut self, iter: I)
fn extend<I: IntoIterator<Item = T>>(&mut self, iter: I)
Extends the number of columns of the VecStorage
with elements
from the given iterator.
Panics
This function panics if the number of elements yielded by the
given iterator is not a multiple of the number of rows of the
VecStorage
.
source§fn extend_one(&mut self, item: A)
fn extend_one(&mut self, item: A)
extend_one
)source§fn extend_reserve(&mut self, additional: usize)
fn extend_reserve(&mut self, additional: usize)
extend_one
)source§impl<T: PartialEq, R: PartialEq + Dim, C: PartialEq + Dim> PartialEq<VecStorage<T, R, C>> for VecStorage<T, R, C>
impl<T: PartialEq, R: PartialEq + Dim, C: PartialEq + Dim> PartialEq<VecStorage<T, R, C>> for VecStorage<T, R, C>
source§fn eq(&self, other: &VecStorage<T, R, C>) -> bool
fn eq(&self, other: &VecStorage<T, R, C>) -> bool
self
and other
values to be equal, and is used
by ==
.source§impl<T, C1, C2> ReshapableStorage<T, Dynamic, C1, Dynamic, C2> for VecStorage<T, Dynamic, C1>where
T: Scalar,
C1: Dim,
C2: Dim,
impl<T, C1, C2> ReshapableStorage<T, Dynamic, C1, Dynamic, C2> for VecStorage<T, Dynamic, C1>where T: Scalar, C1: Dim, C2: Dim,
§type Output = VecStorage<T, Dynamic, C2>
type Output = VecStorage<T, Dynamic, C2>
source§fn reshape_generic(self, nrows: Dynamic, ncols: C2) -> Self::Output
fn reshape_generic(self, nrows: Dynamic, ncols: C2) -> Self::Output
source§impl<T, C1, R2> ReshapableStorage<T, Dynamic, C1, R2, Dynamic> for VecStorage<T, Dynamic, C1>where
T: Scalar,
C1: Dim,
R2: DimName,
impl<T, C1, R2> ReshapableStorage<T, Dynamic, C1, R2, Dynamic> for VecStorage<T, Dynamic, C1>where T: Scalar, C1: Dim, R2: DimName,
§type Output = VecStorage<T, R2, Dynamic>
type Output = VecStorage<T, R2, Dynamic>
source§fn reshape_generic(self, nrows: R2, ncols: Dynamic) -> Self::Output
fn reshape_generic(self, nrows: R2, ncols: Dynamic) -> Self::Output
source§impl<T, R1, C2> ReshapableStorage<T, R1, Dynamic, Dynamic, C2> for VecStorage<T, R1, Dynamic>where
T: Scalar,
R1: DimName,
C2: Dim,
impl<T, R1, C2> ReshapableStorage<T, R1, Dynamic, Dynamic, C2> for VecStorage<T, R1, Dynamic>where T: Scalar, R1: DimName, C2: Dim,
§type Output = VecStorage<T, Dynamic, C2>
type Output = VecStorage<T, Dynamic, C2>
source§fn reshape_generic(self, nrows: Dynamic, ncols: C2) -> Self::Output
fn reshape_generic(self, nrows: Dynamic, ncols: C2) -> Self::Output
source§impl<T, R1, R2> ReshapableStorage<T, R1, Dynamic, R2, Dynamic> for VecStorage<T, R1, Dynamic>where
T: Scalar,
R1: DimName,
R2: DimName,
impl<T, R1, R2> ReshapableStorage<T, R1, Dynamic, R2, Dynamic> for VecStorage<T, R1, Dynamic>where T: Scalar, R1: DimName, R2: DimName,
§type Output = VecStorage<T, R2, Dynamic>
type Output = VecStorage<T, R2, Dynamic>
source§fn reshape_generic(self, nrows: R2, ncols: Dynamic) -> Self::Output
fn reshape_generic(self, nrows: R2, ncols: Dynamic) -> Self::Output
source§impl<T: Scalar, C: Dim> Storage<T, Dynamic, C> for VecStorage<T, Dynamic, C>where
DefaultAllocator: Allocator<T, Dynamic, C, Buffer = Self>,
impl<T: Scalar, C: Dim> Storage<T, Dynamic, C> for VecStorage<T, Dynamic, C>where DefaultAllocator: Allocator<T, Dynamic, C, Buffer = Self>,
source§fn shape(&self) -> (Dynamic, C)
fn shape(&self) -> (Dynamic, C)
Self::dimension()
if it is not None
.source§fn strides(&self) -> (Self::RStride, Self::CStride)
fn strides(&self) -> (Self::RStride, Self::CStride)
source§fn is_contiguous(&self) -> bool
fn is_contiguous(&self) -> bool
source§fn into_owned(self) -> Owned<T, Dynamic, C>where
DefaultAllocator: Allocator<T, Dynamic, C>,
fn into_owned(self) -> Owned<T, Dynamic, C>where DefaultAllocator: Allocator<T, Dynamic, C>,
source§fn clone_owned(&self) -> Owned<T, Dynamic, C>where
DefaultAllocator: Allocator<T, Dynamic, C>,
fn clone_owned(&self) -> Owned<T, Dynamic, C>where DefaultAllocator: Allocator<T, Dynamic, C>,
source§fn linear_index(&self, irow: usize, icol: usize) -> usize
fn linear_index(&self, irow: usize, icol: usize) -> usize
source§unsafe fn get_address_unchecked_linear(&self, i: usize) -> *const T
unsafe fn get_address_unchecked_linear(&self, i: usize) -> *const T
source§unsafe fn get_address_unchecked(&self, irow: usize, icol: usize) -> *const T
unsafe fn get_address_unchecked(&self, irow: usize, icol: usize) -> *const T
source§unsafe fn get_unchecked_linear(&self, i: usize) -> &T
unsafe fn get_unchecked_linear(&self, i: usize) -> &T
source§impl<T: Scalar, R: DimName> Storage<T, R, Dynamic> for VecStorage<T, R, Dynamic>where
DefaultAllocator: Allocator<T, R, Dynamic, Buffer = Self>,
impl<T: Scalar, R: DimName> Storage<T, R, Dynamic> for VecStorage<T, R, Dynamic>where DefaultAllocator: Allocator<T, R, Dynamic, Buffer = Self>,
source§fn shape(&self) -> (R, Dynamic)
fn shape(&self) -> (R, Dynamic)
Self::dimension()
if it is not None
.source§fn strides(&self) -> (Self::RStride, Self::CStride)
fn strides(&self) -> (Self::RStride, Self::CStride)
source§fn is_contiguous(&self) -> bool
fn is_contiguous(&self) -> bool
source§fn into_owned(self) -> Owned<T, R, Dynamic>where
DefaultAllocator: Allocator<T, R, Dynamic>,
fn into_owned(self) -> Owned<T, R, Dynamic>where DefaultAllocator: Allocator<T, R, Dynamic>,
source§fn clone_owned(&self) -> Owned<T, R, Dynamic>where
DefaultAllocator: Allocator<T, R, Dynamic>,
fn clone_owned(&self) -> Owned<T, R, Dynamic>where DefaultAllocator: Allocator<T, R, Dynamic>,
source§fn linear_index(&self, irow: usize, icol: usize) -> usize
fn linear_index(&self, irow: usize, icol: usize) -> usize
source§unsafe fn get_address_unchecked_linear(&self, i: usize) -> *const T
unsafe fn get_address_unchecked_linear(&self, i: usize) -> *const T
source§unsafe fn get_address_unchecked(&self, irow: usize, icol: usize) -> *const T
unsafe fn get_address_unchecked(&self, irow: usize, icol: usize) -> *const T
source§unsafe fn get_unchecked_linear(&self, i: usize) -> &T
unsafe fn get_unchecked_linear(&self, i: usize) -> &T
source§impl<T: Scalar, C: Dim> StorageMut<T, Dynamic, C> for VecStorage<T, Dynamic, C>where
DefaultAllocator: Allocator<T, Dynamic, C, Buffer = Self>,
impl<T: Scalar, C: Dim> StorageMut<T, Dynamic, C> for VecStorage<T, Dynamic, C>where DefaultAllocator: Allocator<T, Dynamic, C, Buffer = Self>,
source§fn as_mut_slice(&mut self) -> &mut [T]
fn as_mut_slice(&mut self) -> &mut [T]
source§unsafe fn get_address_unchecked_linear_mut(&mut self, i: usize) -> *mut T
unsafe fn get_address_unchecked_linear_mut(&mut self, i: usize) -> *mut T
source§unsafe fn get_address_unchecked_mut(
&mut self,
irow: usize,
icol: usize
) -> *mut T
unsafe fn get_address_unchecked_mut( &mut self, irow: usize, icol: usize ) -> *mut T
source§unsafe fn get_unchecked_linear_mut(&mut self, i: usize) -> &mut T
unsafe fn get_unchecked_linear_mut(&mut self, i: usize) -> &mut T
source§unsafe fn get_unchecked_mut(&mut self, irow: usize, icol: usize) -> &mut T
unsafe fn get_unchecked_mut(&mut self, irow: usize, icol: usize) -> &mut T
(irow, icol)
without bound-checking.source§unsafe fn swap_unchecked_linear(&mut self, i1: usize, i2: usize)
unsafe fn swap_unchecked_linear(&mut self, i1: usize, i2: usize)
source§impl<T: Scalar, R: DimName> StorageMut<T, R, Dynamic> for VecStorage<T, R, Dynamic>where
DefaultAllocator: Allocator<T, R, Dynamic, Buffer = Self>,
impl<T: Scalar, R: DimName> StorageMut<T, R, Dynamic> for VecStorage<T, R, Dynamic>where DefaultAllocator: Allocator<T, R, Dynamic, Buffer = Self>,
source§fn as_mut_slice(&mut self) -> &mut [T]
fn as_mut_slice(&mut self) -> &mut [T]
source§unsafe fn get_address_unchecked_linear_mut(&mut self, i: usize) -> *mut T
unsafe fn get_address_unchecked_linear_mut(&mut self, i: usize) -> *mut T
source§unsafe fn get_address_unchecked_mut(
&mut self,
irow: usize,
icol: usize
) -> *mut T
unsafe fn get_address_unchecked_mut( &mut self, irow: usize, icol: usize ) -> *mut T
source§unsafe fn get_unchecked_linear_mut(&mut self, i: usize) -> &mut T
unsafe fn get_unchecked_linear_mut(&mut self, i: usize) -> &mut T
source§unsafe fn get_unchecked_mut(&mut self, irow: usize, icol: usize) -> &mut T
unsafe fn get_unchecked_mut(&mut self, irow: usize, icol: usize) -> &mut T
(irow, icol)
without bound-checking.source§unsafe fn swap_unchecked_linear(&mut self, i1: usize, i2: usize)
unsafe fn swap_unchecked_linear(&mut self, i1: usize, i2: usize)
impl<T: Scalar, C: Dim> ContiguousStorage<T, Dynamic, C> for VecStorage<T, Dynamic, C>where DefaultAllocator: Allocator<T, Dynamic, C, Buffer = Self>,
impl<T: Scalar, R: DimName> ContiguousStorage<T, R, Dynamic> for VecStorage<T, R, Dynamic>where DefaultAllocator: Allocator<T, R, Dynamic, Buffer = Self>,
impl<T: Scalar, C: Dim> ContiguousStorageMut<T, Dynamic, C> for VecStorage<T, Dynamic, C>where DefaultAllocator: Allocator<T, Dynamic, C, Buffer = Self>,
impl<T: Scalar, R: DimName> ContiguousStorageMut<T, R, Dynamic> for VecStorage<T, R, Dynamic>where DefaultAllocator: Allocator<T, R, Dynamic, Buffer = Self>,
impl<T: Eq, R: Eq + Dim, C: Eq + Dim> Eq for VecStorage<T, R, C>
impl<T, R: Dim, C: Dim> StructuralEq for VecStorage<T, R, C>
impl<T, R: Dim, C: Dim> StructuralPartialEq for VecStorage<T, R, C>
Auto Trait Implementations§
impl<T, R, C> RefUnwindSafe for VecStorage<T, R, C>where C: RefUnwindSafe, R: RefUnwindSafe, T: RefUnwindSafe,
impl<T, R, C> Send for VecStorage<T, R, C>where T: Send,
impl<T, R, C> Sync for VecStorage<T, R, C>where T: Sync,
impl<T, R, C> Unpin for VecStorage<T, R, C>where C: Unpin, R: Unpin, T: Unpin,
impl<T, R, C> UnwindSafe for VecStorage<T, R, C>where C: UnwindSafe, R: UnwindSafe, T: UnwindSafe,
Blanket Implementations§
source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere T: ?Sized,
source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
source§impl<SS, SP> SupersetOf<SS> for SPwhere
SS: SubsetOf<SP>,
impl<SS, SP> SupersetOf<SS> for SPwhere SS: SubsetOf<SP>,
source§fn to_subset(&self) -> Option<SS>
fn to_subset(&self) -> Option<SS>
self
from the equivalent element of its
superset. Read moresource§fn is_in_subset(&self) -> bool
fn is_in_subset(&self) -> bool
self
is actually part of its subset T
(and can be converted to it).source§fn to_subset_unchecked(&self) -> SS
fn to_subset_unchecked(&self) -> SS
self.to_subset
but without any property checks. Always succeeds.source§fn from_subset(element: &SS) -> SP
fn from_subset(element: &SS) -> SP
self
to the equivalent element of its superset.