[][src]Trait generic_vec::raw::Storage

pub unsafe trait Storage<T> {
    pub const IS_ALIGNED: bool;

    pub fn capacity(&self) -> usize;
pub fn as_ptr(&self) -> *const T;
pub fn as_mut_ptr(&mut self) -> *mut T;
pub fn reserve(&mut self, new_capacity: usize);
pub fn try_reserve(&mut self, new_capacity: usize) -> bool; }

A type that can hold Ts, and potentially reserve space for more Self::Itemss

Associated Constants

pub const IS_ALIGNED: bool[src]

Is the pointer from as_ptr guaranteed to be aligned to T

Ideally this would be a where clause to prevent alignment issues at compile time, but that can't happen until const-generics allows predicates in where bounds (like where align_of::<T>() >= align_of::<U>())

Loading content...

Required methods

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

The number of elements that it is valid to write to this Storage

i.e. as_mut_ptr()..as_mut_ptr() + capacity() should be valid to write Ts

pub fn as_ptr(&self) -> *const T[src]

Returns a pointer to the first element

pub fn as_mut_ptr(&mut self) -> *mut T[src]

Returns a mutable pointer to the first element

pub fn reserve(&mut self, new_capacity: usize)[src]

Reserves space for at least new_capacity elements

Safety

After this call successfully ends, the capacity must be at least new_capacity

Panic/Abort

Maybe panic or abort if it is impossible to set the capacity to at least new_capacity

pub fn try_reserve(&mut self, new_capacity: usize) -> bool[src]

Tries to reserve space for at least new_capacity elements

Returns Ok(()) on success, Err(AllocError) if it is impossible to set the capacity to at least new_capacity

Safety

If Ok(()) is returned, the capacity must be at least new_capacity

Loading content...

Implementations on Foreign Types

impl<T: Copy> Storage<T> for [T; 0][src]

impl<T: Copy> Storage<T> for [T; 1][src]

impl<T: Copy> Storage<T> for [T; 2][src]

impl<T: Copy> Storage<T> for [T; 3][src]

impl<T: Copy> Storage<T> for [T; 4][src]

impl<T: Copy> Storage<T> for [T; 5][src]

impl<T: Copy> Storage<T> for [T; 6][src]

impl<T: Copy> Storage<T> for [T; 7][src]

impl<T: Copy> Storage<T> for [T; 8][src]

impl<T: Copy> Storage<T> for [T; 9][src]

impl<T: Copy> Storage<T> for [T; 10][src]

impl<T: Copy> Storage<T> for [T; 11][src]

impl<T: Copy> Storage<T> for [T; 12][src]

impl<T: Copy> Storage<T> for [T; 13][src]

impl<T: Copy> Storage<T> for [T; 14][src]

impl<T: Copy> Storage<T> for [T; 15][src]

impl<T: Copy> Storage<T> for [T; 16][src]

impl<T: Copy> Storage<T> for [T; 17][src]

impl<T: Copy> Storage<T> for [T; 18][src]

impl<T: Copy> Storage<T> for [T; 19][src]

impl<T: Copy> Storage<T> for [T; 20][src]

impl<T: Copy> Storage<T> for [T; 21][src]

impl<T: Copy> Storage<T> for [T; 22][src]

impl<T: Copy> Storage<T> for [T; 23][src]

impl<T: Copy> Storage<T> for [T; 24][src]

impl<T: Copy> Storage<T> for [T; 25][src]

impl<T: Copy> Storage<T> for [T; 26][src]

impl<T: Copy> Storage<T> for [T; 27][src]

impl<T: Copy> Storage<T> for [T; 28][src]

impl<T: Copy> Storage<T> for [T; 29][src]

impl<T: Copy> Storage<T> for [T; 30][src]

impl<T: Copy> Storage<T> for [T; 31][src]

impl<T: Copy> Storage<T> for [T; 32][src]

impl<T: Copy> Storage<T> for [T][src]

impl<T, S: ?Sized + Storage<T>, '_> Storage<T> for &'_ mut S[src]

impl<T, S: ?Sized + Storage<T>> Storage<T> for Box<S>[src]

Loading content...

Implementors

impl<T> Storage<T> for ZeroSized<T>[src]

impl<T, U> Storage<U> for UninitSlice<T>[src]

impl<T, U, A: ?Sized + AllocRef> Storage<U> for Heap<T, A>[src]

impl<U, T, A> Storage<U> for UninitBuffer<T, A>[src]

Loading content...