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.
§Safety
This is unsafe because this may cause UB if the size of the vector is changed by the user.
sourcepub unsafe fn resize(self, sz: usize) -> Vec<MaybeUninit<T>>
pub unsafe fn resize(self, sz: usize) -> Vec<MaybeUninit<T>>
Resizes the underlying mutable data storage and unwraps it.
§Safety
- If
sz
is larger than the current size, additional elements are uninitialized. - If
sz
is smaller than the current size, additional elements are truncated but not dropped. It is the responsibility of the caller of this method to drop these elements.
sourcepub fn as_slice(&self) -> &[T]
pub fn as_slice(&self) -> &[T]
A slice containing all the components stored in this storage in column-major order.
sourcepub fn as_mut_slice(&mut self) -> &mut [T]
pub fn as_mut_slice(&mut self) -> &mut [T]
A mutable slice containing all the components stored in this storage in column-major order.
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, Dyn>
impl<'a, T: 'a + Copy, R: Dim> Extend<&'a T> for VecStorage<T, R, Dyn>
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, Dyn>
impl<T, R, RV, SV> Extend<Matrix<T, RV, Const<1>, SV>> for VecStorage<T, R, Dyn>
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, Dyn, U1>
impl<T> Extend<T> for VecStorage<T, Dyn, 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, Dyn>
impl<T, R: Dim> Extend<T> for VecStorage<T, R, Dyn>
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, R: Dim, C: Dim> From<VecStorage<T, R, C>> for Vec<T>
impl<T, R: Dim, C: Dim> From<VecStorage<T, R, C>> for Vec<T>
source§fn from(vec: VecStorage<T, R, C>) -> Self
fn from(vec: VecStorage<T, R, C>) -> Self
source§impl<T: PartialEq, R: PartialEq + Dim, C: PartialEq + Dim> PartialEq for VecStorage<T, R, C>
impl<T: PartialEq, R: PartialEq + Dim, C: PartialEq + Dim> PartialEq 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, C: Dim> RawStorage<T, Dyn, C> for VecStorage<T, Dyn, C>
impl<T, C: Dim> RawStorage<T, Dyn, C> for VecStorage<T, Dyn, C>
source§fn shape(&self) -> (Dyn, C)
fn shape(&self) -> (Dyn, 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§unsafe fn as_slice_unchecked(&self) -> &[T]
unsafe fn as_slice_unchecked(&self) -> &[T]
source§fn linear_index(&self, irow: usize, icol: usize) -> usize
fn linear_index(&self, irow: usize, icol: usize) -> usize
source§fn get_address_unchecked_linear(&self, i: usize) -> *const T
fn get_address_unchecked_linear(&self, i: usize) -> *const T
source§fn get_address_unchecked(&self, irow: usize, icol: usize) -> *const T
fn get_address_unchecked(&self, irow: usize, icol: usize) -> *const T
source§impl<T, R: DimName> RawStorage<T, R, Dyn> for VecStorage<T, R, Dyn>
impl<T, R: DimName> RawStorage<T, R, Dyn> for VecStorage<T, R, Dyn>
source§fn shape(&self) -> (R, Dyn)
fn shape(&self) -> (R, Dyn)
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§unsafe fn as_slice_unchecked(&self) -> &[T]
unsafe fn as_slice_unchecked(&self) -> &[T]
source§fn linear_index(&self, irow: usize, icol: usize) -> usize
fn linear_index(&self, irow: usize, icol: usize) -> usize
source§fn get_address_unchecked_linear(&self, i: usize) -> *const T
fn get_address_unchecked_linear(&self, i: usize) -> *const T
source§fn get_address_unchecked(&self, irow: usize, icol: usize) -> *const T
fn get_address_unchecked(&self, irow: usize, icol: usize) -> *const T
source§impl<T, C: Dim> RawStorageMut<T, Dyn, C> for VecStorage<T, Dyn, C>
impl<T, C: Dim> RawStorageMut<T, Dyn, C> for VecStorage<T, Dyn, C>
source§unsafe fn as_mut_slice_unchecked(&mut self) -> &mut [T]
unsafe fn as_mut_slice_unchecked(&mut self) -> &mut [T]
source§fn get_address_unchecked_linear_mut(&mut self, i: usize) -> *mut T
fn get_address_unchecked_linear_mut(&mut self, i: usize) -> *mut T
source§fn get_address_unchecked_mut(&mut self, irow: usize, icol: usize) -> *mut T
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. Read moresource§impl<T, R: DimName> RawStorageMut<T, R, Dyn> for VecStorage<T, R, Dyn>
impl<T, R: DimName> RawStorageMut<T, R, Dyn> for VecStorage<T, R, Dyn>
source§unsafe fn as_mut_slice_unchecked(&mut self) -> &mut [T]
unsafe fn as_mut_slice_unchecked(&mut self) -> &mut [T]
source§fn get_address_unchecked_linear_mut(&mut self, i: usize) -> *mut T
fn get_address_unchecked_linear_mut(&mut self, i: usize) -> *mut T
source§fn get_address_unchecked_mut(&mut self, irow: usize, icol: usize) -> *mut T
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. Read moresource§impl<T, C1, C2> ReshapableStorage<T, Dyn, C1, Dyn, C2> for VecStorage<T, Dyn, C1>
impl<T, C1, C2> ReshapableStorage<T, Dyn, C1, Dyn, C2> for VecStorage<T, Dyn, C1>
§type Output = VecStorage<T, Dyn, C2>
type Output = VecStorage<T, Dyn, C2>
source§fn reshape_generic(self, nrows: Dyn, ncols: C2) -> Self::Output
fn reshape_generic(self, nrows: Dyn, ncols: C2) -> Self::Output
source§impl<T, C1, R2> ReshapableStorage<T, Dyn, C1, R2, Dyn> for VecStorage<T, Dyn, C1>
impl<T, C1, R2> ReshapableStorage<T, Dyn, C1, R2, Dyn> for VecStorage<T, Dyn, C1>
§type Output = VecStorage<T, R2, Dyn>
type Output = VecStorage<T, R2, Dyn>
source§fn reshape_generic(self, nrows: R2, ncols: Dyn) -> Self::Output
fn reshape_generic(self, nrows: R2, ncols: Dyn) -> Self::Output
source§impl<T, R1, C2> ReshapableStorage<T, R1, Dyn, Dyn, C2> for VecStorage<T, R1, Dyn>
impl<T, R1, C2> ReshapableStorage<T, R1, Dyn, Dyn, C2> for VecStorage<T, R1, Dyn>
§type Output = VecStorage<T, Dyn, C2>
type Output = VecStorage<T, Dyn, C2>
source§fn reshape_generic(self, nrows: Dyn, ncols: C2) -> Self::Output
fn reshape_generic(self, nrows: Dyn, ncols: C2) -> Self::Output
source§impl<T, R1, R2> ReshapableStorage<T, R1, Dyn, R2, Dyn> for VecStorage<T, R1, Dyn>
impl<T, R1, R2> ReshapableStorage<T, R1, Dyn, R2, Dyn> for VecStorage<T, R1, Dyn>
§type Output = VecStorage<T, R2, Dyn>
type Output = VecStorage<T, R2, Dyn>
source§fn reshape_generic(self, nrows: R2, ncols: Dyn) -> Self::Output
fn reshape_generic(self, nrows: R2, ncols: Dyn) -> Self::Output
source§impl<T: Scalar, C: Dim> Storage<T, Dyn, C> for VecStorage<T, Dyn, C>
impl<T: Scalar, C: Dim> Storage<T, Dyn, C> for VecStorage<T, Dyn, C>
source§fn into_owned(self) -> Owned<T, Dyn, C>
fn into_owned(self) -> Owned<T, Dyn, C>
source§fn clone_owned(&self) -> Owned<T, Dyn, C>
fn clone_owned(&self) -> Owned<T, Dyn, C>
source§fn forget_elements(self)
fn forget_elements(self)
source§impl<T: Scalar, R: DimName> Storage<T, R, Dyn> for VecStorage<T, R, Dyn>
impl<T: Scalar, R: DimName> Storage<T, R, Dyn> for VecStorage<T, R, Dyn>
source§fn into_owned(self) -> Owned<T, R, Dyn>
fn into_owned(self) -> Owned<T, R, Dyn>
source§fn clone_owned(&self) -> Owned<T, R, Dyn>
fn clone_owned(&self) -> Owned<T, R, Dyn>
source§fn forget_elements(self)
fn forget_elements(self)
impl<T: Eq, R: Eq + Dim, C: Eq + Dim> Eq for VecStorage<T, R, C>
impl<T, R: Dim, C: Dim> IsContiguous for VecStorage<T, R, C>
impl<T, R: Dim, C: Dim> StructuralPartialEq for VecStorage<T, R, C>
Auto Trait Implementations§
impl<T, R, C> Freeze for VecStorage<T, R, C>
impl<T, R, C> RefUnwindSafe for VecStorage<T, R, C>
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>
impl<T, R, C> UnwindSafe for VecStorage<T, R, C>
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.