pub struct DVectorMut<D> { /* private fields */ }Expand description
A mutable vector of decimal values with fixed precision and scale.
D is bound by NativeDecimalType, which can be one of the native integer types (i8,
i16, i32, i64, i128) or i256. D is used to store the decimal values.
The decimal vector maintains a PrecisionScale<D> that defines the precision (total number of
digits) and scale (digits after the decimal point) for all values in the vector.
Unlike primitive vectors, decimal vectors require validation during construction and
modification to ensure values stay within the bounds defined by their precision and scale.
This makes operations like “push” fallible, thus we have a try_push() method instead.
Implementations§
Source§impl<D: NativeDecimalType> DVectorMut<D>
impl<D: NativeDecimalType> DVectorMut<D>
Sourcepub fn new(
ps: PrecisionScale<D>,
elements: BufferMut<D>,
validity: MaskMut,
) -> Self
pub fn new( ps: PrecisionScale<D>, elements: BufferMut<D>, validity: MaskMut, ) -> Self
Creates a new DVectorMut<D> from the given PrecisionScale, elements buffer, and
validity mask.
§Panics
Panics if:
- The lengths of the
elementsandvaliditydo not match. - Any of the elements are out of bounds for the given
PrecisionScale.
Sourcepub fn try_new(
ps: PrecisionScale<D>,
elements: BufferMut<D>,
validity: MaskMut,
) -> VortexResult<Self>
pub fn try_new( ps: PrecisionScale<D>, elements: BufferMut<D>, validity: MaskMut, ) -> VortexResult<Self>
Tries to create a new DVectorMut<D> from the given PrecisionScale, elements buffer,
and validity mask.
§Errors
Returns an error if:
- The lengths of the
elementsandvaliditydo not match. - Any of the elements are out of bounds for the given
PrecisionScale.
Sourcepub unsafe fn new_unchecked(
ps: PrecisionScale<D>,
elements: BufferMut<D>,
validity: MaskMut,
) -> Self
pub unsafe fn new_unchecked( ps: PrecisionScale<D>, elements: BufferMut<D>, validity: MaskMut, ) -> Self
Creates a new DVectorMut<D> from the given PrecisionScale, elements buffer, and
validity mask, without validation.
§Safety
The caller must ensure:
- The lengths of the elements and validity are equal.
- All elements are in bounds for the given
PrecisionScale.
Sourcepub fn with_capacity(ps: PrecisionScale<D>, capacity: usize) -> Self
pub fn with_capacity(ps: PrecisionScale<D>, capacity: usize) -> Self
Create a new mutable primitive vector with the given capacity.
Sourcepub fn into_parts(self) -> (PrecisionScale<D>, BufferMut<D>, MaskMut)
pub fn into_parts(self) -> (PrecisionScale<D>, BufferMut<D>, MaskMut)
Decomposes the decimal vector into its constituent parts (PrecisionScale, decimal
buffer, and validity).
Sourcepub fn precision_scale(&self) -> PrecisionScale<D>
pub fn precision_scale(&self) -> PrecisionScale<D>
Get the precision/scale of the decimal vector.
Sourcepub fn elements(&self) -> &BufferMut<D>
pub fn elements(&self) -> &BufferMut<D>
Returns a reference to the underlying elements buffer containing the decimal data.
Sourcepub unsafe fn elements_mut(&mut self) -> &mut BufferMut<D>
pub unsafe fn elements_mut(&mut self) -> &mut BufferMut<D>
Returns a mutable reference to the underlying elements buffer containing the decimal data.
§Safety
Modifying the elements buffer directly may violate the precision/scale constraints. The caller must ensure that any modifications maintain these invariants.
Sourcepub unsafe fn validity_mut(&mut self) -> &mut MaskMut
pub unsafe fn validity_mut(&mut self) -> &mut MaskMut
Returns a mutable reference to the underlying validity mask of the vector.
§Safety
The caller must ensure that when the length of the validity changes, the length of the elements is changed to match it.
Sourcepub fn get(&self, index: usize) -> Option<&D>
pub fn get(&self, index: usize) -> Option<&D>
Gets a nullable element at the given index, panicking on out-of-bounds.
If the element at the given index is null, returns None. Otherwise, returns Some(x),
where x: D.
Note that this get method is different from the standard library slice::get, which
returns None if the index is out of bounds. This method will panic if the index is out of
bounds, and return None if the elements is null.
§Panics
Panics if the index is out of bounds.
Sourcepub fn try_push(&mut self, value: D) -> VortexResult<()>
pub fn try_push(&mut self, value: D) -> VortexResult<()>
Appends a new element to the end of the vector.
§Errors
Returns an error if the value is out of bounds for the vector’s precision/scale.
Sourcepub fn try_append_n(&mut self, value: D, n: usize) -> VortexResult<()>
pub fn try_append_n(&mut self, value: D, n: usize) -> VortexResult<()>
Appends n elements to the vector, all set to the given value.
§Errors
Returns an error if the value is out of bounds for the vector’s precision/scale.
Trait Implementations§
Source§impl<D: NativeDecimalType> AsRef<[D]> for DVectorMut<D>
impl<D: NativeDecimalType> AsRef<[D]> for DVectorMut<D>
Source§impl<D: Clone> Clone for DVectorMut<D>
impl<D: Clone> Clone for DVectorMut<D>
Source§fn clone(&self) -> DVectorMut<D>
fn clone(&self) -> DVectorMut<D>
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreSource§impl<D: Debug> Debug for DVectorMut<D>
impl<D: Debug> Debug for DVectorMut<D>
Source§impl<D: NativeDecimalType> From<DVectorMut<D>> for DecimalVectorMut
impl<D: NativeDecimalType> From<DVectorMut<D>> for DecimalVectorMut
Source§fn from(val: DVectorMut<D>) -> Self
fn from(val: DVectorMut<D>) -> Self
Source§impl<D: NativeDecimalType> From<DVectorMut<D>> for VectorMut
impl<D: NativeDecimalType> From<DVectorMut<D>> for VectorMut
Source§fn from(val: DVectorMut<D>) -> Self
fn from(val: DVectorMut<D>) -> Self
Source§impl<D: NativeDecimalType> VectorMutOps for DVectorMut<D>
impl<D: NativeDecimalType> VectorMutOps for DVectorMut<D>
Source§fn len(&self) -> usize
fn len(&self) -> usize
Source§fn validity(&self) -> &MaskMut
fn validity(&self) -> &MaskMut
true represents a valid element and
false represents a null element. Read moreSource§fn capacity(&self) -> usize
fn capacity(&self) -> usize
Source§fn reserve(&mut self, additional: usize)
fn reserve(&mut self, additional: usize)
additional more elements to be inserted in the given
vector. Read moreSource§fn truncate(&mut self, len: usize)
fn truncate(&mut self, len: usize)
Source§fn extend_from_vector(&mut self, other: &DVector<D>)
fn extend_from_vector(&mut self, other: &DVector<D>)
Source§fn append_nulls(&mut self, n: usize)
fn append_nulls(&mut self, n: usize)
n null elements to the vector. Read moreSource§fn split_off(&mut self, at: usize) -> Self
fn split_off(&mut self, at: usize) -> Self
Auto Trait Implementations§
impl<D> Freeze for DVectorMut<D>
impl<D> RefUnwindSafe for DVectorMut<D>where
D: RefUnwindSafe,
impl<D> Send for DVectorMut<D>where
D: Send,
impl<D> Sync for DVectorMut<D>where
D: Sync,
impl<D> Unpin for DVectorMut<D>where
D: Unpin,
impl<D> UnwindSafe for DVectorMut<D>where
D: UnwindSafe,
Blanket Implementations§
Source§impl<A, T> AsBits<T> for A
impl<A, T> AsBits<T> for A
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<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<T> FmtForward for T
impl<T> FmtForward for T
Source§fn fmt_binary(self) -> FmtBinary<Self>where
Self: Binary,
fn fmt_binary(self) -> FmtBinary<Self>where
Self: Binary,
self to use its Binary implementation when Debug-formatted.Source§fn fmt_display(self) -> FmtDisplay<Self>where
Self: Display,
fn fmt_display(self) -> FmtDisplay<Self>where
Self: Display,
self to use its Display implementation when
Debug-formatted.Source§fn fmt_lower_exp(self) -> FmtLowerExp<Self>where
Self: LowerExp,
fn fmt_lower_exp(self) -> FmtLowerExp<Self>where
Self: LowerExp,
self to use its LowerExp implementation when
Debug-formatted.Source§fn fmt_lower_hex(self) -> FmtLowerHex<Self>where
Self: LowerHex,
fn fmt_lower_hex(self) -> FmtLowerHex<Self>where
Self: LowerHex,
self to use its LowerHex implementation when
Debug-formatted.Source§fn fmt_octal(self) -> FmtOctal<Self>where
Self: Octal,
fn fmt_octal(self) -> FmtOctal<Self>where
Self: Octal,
self to use its Octal implementation when Debug-formatted.Source§fn fmt_pointer(self) -> FmtPointer<Self>where
Self: Pointer,
fn fmt_pointer(self) -> FmtPointer<Self>where
Self: Pointer,
self to use its Pointer implementation when
Debug-formatted.Source§fn fmt_upper_exp(self) -> FmtUpperExp<Self>where
Self: UpperExp,
fn fmt_upper_exp(self) -> FmtUpperExp<Self>where
Self: UpperExp,
self to use its UpperExp implementation when
Debug-formatted.Source§fn fmt_upper_hex(self) -> FmtUpperHex<Self>where
Self: UpperHex,
fn fmt_upper_hex(self) -> FmtUpperHex<Self>where
Self: UpperHex,
self to use its UpperHex implementation when
Debug-formatted.Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§impl<T> Pipe for Twhere
T: ?Sized,
impl<T> Pipe for Twhere
T: ?Sized,
Source§fn pipe<R>(self, func: impl FnOnce(Self) -> R) -> Rwhere
Self: Sized,
fn pipe<R>(self, func: impl FnOnce(Self) -> R) -> Rwhere
Self: Sized,
Source§fn pipe_ref<'a, R>(&'a self, func: impl FnOnce(&'a Self) -> R) -> Rwhere
R: 'a,
fn pipe_ref<'a, R>(&'a self, func: impl FnOnce(&'a Self) -> R) -> Rwhere
R: 'a,
self and passes that borrow into the pipe function. Read moreSource§fn pipe_ref_mut<'a, R>(&'a mut self, func: impl FnOnce(&'a mut Self) -> R) -> Rwhere
R: 'a,
fn pipe_ref_mut<'a, R>(&'a mut self, func: impl FnOnce(&'a mut Self) -> R) -> Rwhere
R: 'a,
self and passes that borrow into the pipe function. Read moreSource§fn pipe_borrow<'a, B, R>(&'a self, func: impl FnOnce(&'a B) -> R) -> R
fn pipe_borrow<'a, B, R>(&'a self, func: impl FnOnce(&'a B) -> R) -> R
Source§fn pipe_borrow_mut<'a, B, R>(
&'a mut self,
func: impl FnOnce(&'a mut B) -> R,
) -> R
fn pipe_borrow_mut<'a, B, R>( &'a mut self, func: impl FnOnce(&'a mut B) -> R, ) -> R
Source§fn pipe_as_ref<'a, U, R>(&'a self, func: impl FnOnce(&'a U) -> R) -> R
fn pipe_as_ref<'a, U, R>(&'a self, func: impl FnOnce(&'a U) -> R) -> R
self, then passes self.as_ref() into the pipe function.Source§fn pipe_as_mut<'a, U, R>(&'a mut self, func: impl FnOnce(&'a mut U) -> R) -> R
fn pipe_as_mut<'a, U, R>(&'a mut self, func: impl FnOnce(&'a mut U) -> R) -> R
self, then passes self.as_mut() into the pipe
function.Source§fn pipe_deref<'a, T, R>(&'a self, func: impl FnOnce(&'a T) -> R) -> R
fn pipe_deref<'a, T, R>(&'a self, func: impl FnOnce(&'a T) -> R) -> R
self, then passes self.deref() into the pipe function.Source§impl<T> Tap for T
impl<T> Tap for T
Source§fn tap_borrow<B>(self, func: impl FnOnce(&B)) -> Self
fn tap_borrow<B>(self, func: impl FnOnce(&B)) -> Self
Borrow<B> of a value. Read moreSource§fn tap_borrow_mut<B>(self, func: impl FnOnce(&mut B)) -> Self
fn tap_borrow_mut<B>(self, func: impl FnOnce(&mut B)) -> Self
BorrowMut<B> of a value. Read moreSource§fn tap_ref<R>(self, func: impl FnOnce(&R)) -> Self
fn tap_ref<R>(self, func: impl FnOnce(&R)) -> Self
AsRef<R> view of a value. Read moreSource§fn tap_ref_mut<R>(self, func: impl FnOnce(&mut R)) -> Self
fn tap_ref_mut<R>(self, func: impl FnOnce(&mut R)) -> Self
AsMut<R> view of a value. Read moreSource§fn tap_deref<T>(self, func: impl FnOnce(&T)) -> Self
fn tap_deref<T>(self, func: impl FnOnce(&T)) -> Self
Deref::Target of a value. Read moreSource§fn tap_deref_mut<T>(self, func: impl FnOnce(&mut T)) -> Self
fn tap_deref_mut<T>(self, func: impl FnOnce(&mut T)) -> Self
Deref::Target of a value. Read moreSource§fn tap_dbg(self, func: impl FnOnce(&Self)) -> Self
fn tap_dbg(self, func: impl FnOnce(&Self)) -> Self
.tap() only in debug builds, and is erased in release builds.Source§fn tap_mut_dbg(self, func: impl FnOnce(&mut Self)) -> Self
fn tap_mut_dbg(self, func: impl FnOnce(&mut Self)) -> Self
.tap_mut() only in debug builds, and is erased in release
builds.Source§fn tap_borrow_dbg<B>(self, func: impl FnOnce(&B)) -> Self
fn tap_borrow_dbg<B>(self, func: impl FnOnce(&B)) -> Self
.tap_borrow() only in debug builds, and is erased in release
builds.Source§fn tap_borrow_mut_dbg<B>(self, func: impl FnOnce(&mut B)) -> Self
fn tap_borrow_mut_dbg<B>(self, func: impl FnOnce(&mut B)) -> Self
.tap_borrow_mut() only in debug builds, and is erased in release
builds.Source§fn tap_ref_dbg<R>(self, func: impl FnOnce(&R)) -> Self
fn tap_ref_dbg<R>(self, func: impl FnOnce(&R)) -> Self
.tap_ref() only in debug builds, and is erased in release
builds.Source§fn tap_ref_mut_dbg<R>(self, func: impl FnOnce(&mut R)) -> Self
fn tap_ref_mut_dbg<R>(self, func: impl FnOnce(&mut R)) -> Self
.tap_ref_mut() only in debug builds, and is erased in release
builds.Source§fn tap_deref_dbg<T>(self, func: impl FnOnce(&T)) -> Self
fn tap_deref_dbg<T>(self, func: impl FnOnce(&T)) -> Self
.tap_deref() only in debug builds, and is erased in release
builds.