[][src]Struct dync::SliceDropMut

pub struct SliceDropMut<'a, V = (DropFn, ())> where
    V: ?Sized
{ /* fields omitted */ }

Implementations

impl<'a, V: HasDrop> SliceDropMut<'a, V>[src]

pub fn from_slice<T: Elem>(slice: &'a mut [T]) -> SliceDropMut<'a, V> where
    V: VTable<T>, 
[src]

Construct a SliceDropMut from a given typed slice by reusing the provided memory.

impl<'a, V: ?Sized + HasDrop> SliceDropMut<'a, V>[src]

pub fn into_raw_parts(
    self
) -> (&'a [MaybeUninit<u8>], usize, TypeId, VTableRef<'a, V>)
[src]

Convert this collection into its raw components.

This function exists mainly to enable the into_dyn macro until CoerceUnsized is stabilized.

pub unsafe fn from_raw_parts(
    data: &'a mut [MaybeUninit<u8>],
    element_size: usize,
    element_type_id: TypeId,
    vtable: impl Into<VTableRef<'a, V>>
) -> SliceDropMut<'a, V>
[src]

Construct a SliceDropMut from raw bytes and type metadata.

Safety

Almost exclusively the only inputs that are safe here are the ones returned by into_raw_parts.

This function should not be used other than in internal APIs. It exists to enable the into_dyn macro until CoerceUsize is stabilized.

pub fn upcast<U: From<V>>(self) -> SliceDropMut<'a, U> where
    V: Clone
[src]

Upcast the SliceDropMut into a more general base SliceDropMut.

This function converts the underlying virtual function table into a subset of the existing

pub fn check<T: Any>(&mut self) -> Option<&mut Self>[src]

Check if the current buffer contains elements of the specified type. Returns Some(self) if the type matches and None otherwise.

pub fn reborrow(&self) -> SliceDrop<V>[src]

Construct a clone of the current slice with a reduced lifetime.

This is equivalent to calling subslice with the entire range.

pub fn reborrow_mut(&mut self) -> SliceDropMut<V>[src]

Construct a clone of the current slice with a reduced lifetime.

This is equivalent to calling subslice_mut with the entire range.

pub fn swap(&mut self, i: usize, j: usize)[src]

Swap the values at the two given indices.

pub fn element_type_id(&self) -> TypeId[src]

Get the TypeId of data stored within this buffer.

pub fn len(&self) -> usize[src]

Get the number of elements stored in this buffer.

pub fn is_empty(&self) -> bool[src]

Check if there are any elements stored in this buffer.

pub fn element_size(&self) -> usize[src]

Get the size of the element type in bytes.

pub fn iter_as<T: Any>(&mut self) -> Option<IterMut<T>>[src]

Return an iterator to a slice representing typed data. Returs None if the given type T doesn't match the internal.

Examples

use dync::SliceDropMut;
let mut vec = vec![1.0_f32, 23.0, 0.01, 42.0, 11.43];
let mut buf: SliceDropMut = vec.as_mut_slice().into();
for val in buf.iter_as::<f32>().unwrap() {
    *val += 1.0_f32;
}

pub fn as_slice<T: Any>(&mut self) -> Option<&mut [T]>[src]

Convert this SliceDropMut into a typed slice. Returs None if the given type T doesn't match the internal.

pub fn get_as<T: Elem>(&mut self, i: usize) -> Option<&mut T>[src]

Get i'th element of the buffer.

pub fn rotate_left(&mut self, mid: usize)[src]

Rotates the slice in-place such that the first mid elements of the slice move to the end while the last self.len() - mid elements move to the front. After calling rotate_left, the element previously at index mid will become the first element in the slice.

Example

use dync::*;
let mut vec = vec![1u32,2,3,4,5];
let mut buf: SliceDropMut = vec.as_mut_slice().into();
buf.rotate_left(3);
assert_eq!(buf.as_slice::<u32>().unwrap(), &[4,5,1,2,3]);

pub fn rotate_right(&mut self, k: usize)[src]

Rotates the slice in-place such that the first self.len() - k elements of the slice move to the end while the last k elements move to the front. After calling rotate_right, the element previously at index k will become the first element in the slice.

Example

use dync::*;
let mut vec = vec![1u32,2,3,4,5];
let mut buf: SliceDropMut = vec.as_mut_slice().into();
buf.rotate_right(3);
assert_eq!(buf.as_slice::<u32>().unwrap(), &[3,4,5,1,2]);

pub fn iter(&mut self) -> impl Iterator<Item = ValueMut<V>> where
    V: Clone
[src]

Return an iterator over untyped value references stored in this slice.

In contrast to iter_as, this function defers downcasting on a per element basis. As a result, this type of iteration is typically less efficient if a typed value is needed for each element.

pub fn chunks_exact(
    &self,
    chunk_size: usize
) -> impl Iterator<Item = SliceDrop<V>>
[src]

pub fn chunks_exact_mut(
    &mut self,
    chunk_size: usize
) -> impl Iterator<Item = SliceDropMut<V>>
[src]

pub fn split_at(&mut self, mid: usize) -> (SliceDropMut<V>, SliceDropMut<V>)[src]

pub fn get(&self, i: usize) -> ValueRef<V>[src]

Get a reference to a value stored in this container at index i.

pub fn get_mut(&mut self, i: usize) -> ValueMut<V>[src]

Get a mutable reference to a value stored in this container at index i.

pub fn subslice<I>(&self, i: I) -> SliceDrop<V> where
    I: SliceIndex<[MaybeUninit<u8>], Output = [MaybeUninit<u8>]> + ScaleRange
[src]

Get an immutable subslice from the given range of indices.

pub fn subslice_mut<I>(&mut self, i: I) -> SliceDropMut<V> where
    I: SliceIndex<[MaybeUninit<u8>], Output = [MaybeUninit<u8>]> + ScaleRange
[src]

Get a mutable subslice from the given range of indices.

pub fn into_subslice<I>(self, i: I) -> SliceDropMut<'a, V> where
    I: SliceIndex<[MaybeUninit<u8>], Output = [MaybeUninit<u8>]> + ScaleRange
[src]

Convert this slice into a mutable subslice from the given range of indices.

impl<'a, V: HasDrop + HasClone> SliceDropMut<'a, V>[src]

pub fn clone_from_slice<T: Elem + Clone>(
    &mut self,
    slice: &[T]
) -> Option<&mut Self>
[src]

Clone data from a given slice into the current slice.

Panics

This function will panic if the given slice has as different size than current.

pub fn append_clone_to_vec<'b, T: Elem + Clone>(
    &self,
    vec: &'b mut Vec<T>
) -> Option<&'b mut Vec<T>>
[src]

Append cloned items from this slice to a given Vec<T>. Return the mutable reference Some(vec) if type matched the internal type and None otherwise.

pub fn clone_into_vec<T: Elem + Clone>(self) -> Option<Vec<T>>[src]

Clones contents of self into the given Vec.

Trait Implementations

impl<'a, T, V> From<&'a mut [T]> for SliceDropMut<'a, V> where
    T: Elem,
    V: VTable<T> + HasDrop
[src]

Convert a &mut [T] to a SliceDropMut.

impl<'b, 'a: 'b, V: ?Sized + HasDrop> From<&'b SliceDropMut<'a, V>> for SliceDrop<'b, V>[src]

impl<'a, V> From<SliceDropMut<'a, V>> for Meta<VTableRef<'a, V>>[src]

impl<'a, V: Clone> From<SliceDropMut<'a, V>> for Meta<Ptr<V>>[src]

impl<'a, V: ?Sized> From<SliceDropMut<'a, V>> for SliceDrop<'a, V>[src]

impl<'a, V: ?Sized + HasDrop + HasSend> Send for SliceDropMut<'a, V>[src]

impl<'a, V: ?Sized + HasDrop + HasSync> Sync for SliceDropMut<'a, V>[src]

Auto Trait Implementations

impl<'a, V: ?Sized> RefUnwindSafe for SliceDropMut<'a, V> where
    V: RefUnwindSafe

impl<'a, V: ?Sized> Unpin for SliceDropMut<'a, V>

impl<'a, V = (unsafe fn(&mut [MaybeUninit<u8>]), ())> !UnwindSafe for SliceDropMut<'a, V>

Blanket Implementations

impl<T> Any for T where
    T: 'static + ?Sized
[src]

impl<T> Borrow<T> for T where
    T: ?Sized
[src]

impl<T> BorrowMut<T> for T where
    T: ?Sized
[src]

impl<T> Downcast for T where
    T: Any
[src]

impl<T> DowncastSync for T where
    T: Send + Sync + Any
[src]

impl<T> DropBytes for T where
    T: 'static, 
[src]

impl<T> From<T> for T[src]

impl<T, U> Into<U> for T where
    U: From<T>, 
[src]

impl<T, U> TryFrom<U> for T where
    U: Into<T>, 
[src]

type Error = Infallible

The type returned in the event of a conversion error.

impl<T, U> TryInto<U> for T where
    U: TryFrom<T>, 
[src]

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.