pub trait MutableZeroVecLike<'a, T: ?Sized>: ZeroVecLike<T> {
type OwnedType;
// Required methods
fn zvl_insert(&mut self, index: usize, value: &T);
fn zvl_remove(&mut self, index: usize) -> Self::OwnedType;
fn zvl_replace(&mut self, index: usize, value: &T) -> Self::OwnedType;
fn zvl_push(&mut self, value: &T);
fn zvl_with_capacity(cap: usize) -> Self;
fn zvl_clear(&mut self);
fn zvl_reserve(&mut self, addl: usize);
fn zvl_permute(&mut self, permutation: &mut [usize]);
fn owned_as_t(o: &Self::OwnedType) -> &T;
fn zvl_from_borrowed(b: &'a Self::SliceVariant) -> Self;
fn zvl_as_borrowed_inner(&self) -> Option<&'a Self::SliceVariant>;
}
Expand description
Trait abstracting over ZeroVec
and VarZeroVec
, for use in ZeroMap
. You
should not be implementing or calling this trait directly.
This trait augments ZeroVecLike
with methods allowing for mutation of the underlying
vector for owned vector types.
Methods are prefixed with zvl_*
to avoid clashes with methods on the types themselves
Required Associated Types§
Required Methods§
Sourcefn zvl_insert(&mut self, index: usize, value: &T)
fn zvl_insert(&mut self, index: usize, value: &T)
Insert an element at index
Sourcefn zvl_remove(&mut self, index: usize) -> Self::OwnedType
fn zvl_remove(&mut self, index: usize) -> Self::OwnedType
Remove the element at index
(panicking if nonexistant)
Sourcefn zvl_replace(&mut self, index: usize, value: &T) -> Self::OwnedType
fn zvl_replace(&mut self, index: usize, value: &T) -> Self::OwnedType
Replace the element at index
with another one, returning the old element
Sourcefn zvl_with_capacity(cap: usize) -> Self
fn zvl_with_capacity(cap: usize) -> Self
Create a new, empty vector, with given capacity
Sourcefn zvl_reserve(&mut self, addl: usize)
fn zvl_reserve(&mut self, addl: usize)
Reserve space for addl
additional elements
Sourcefn zvl_permute(&mut self, permutation: &mut [usize])
fn zvl_permute(&mut self, permutation: &mut [usize])
Applies the permutation such that before.zvl_get(permutation[i]) == after.zvl_get(i)
.
§Panics
If permutation
is not a valid permutation of length zvl_len()
.
Sourcefn owned_as_t(o: &Self::OwnedType) -> &T
fn owned_as_t(o: &Self::OwnedType) -> &T
Convert an owned value to a borrowed T
Sourcefn zvl_from_borrowed(b: &'a Self::SliceVariant) -> Self
fn zvl_from_borrowed(b: &'a Self::SliceVariant) -> Self
Construct from the borrowed version of the type
These are useful to ensure serialization parity between borrowed and owned versions
Sourcefn zvl_as_borrowed_inner(&self) -> Option<&'a Self::SliceVariant>
fn zvl_as_borrowed_inner(&self) -> Option<&'a Self::SliceVariant>
Extract the inner borrowed variant if possible. Returns None
if the data is owned.
This function behaves like &'_ self -> Self::SliceVariant<'a>
,
where 'a
is the lifetime of this object’s borrowed data.
This function is similar to matching the Borrowed
variant of ZeroVec
or VarZeroVec
, returning the inner borrowed type.
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.