[][src]Enum managed::ManagedSlice

pub enum ManagedSlice<'a, T: 'a> {
    Borrowed(&'a mut [T]),
    Owned(Vec<T>),
}

A managed slice.

This enum can be used to represent exclusive access to slices of objects. In Rust, exclusive access to an object is obtained by either owning the object, or owning a mutable pointer to the object; hence, "managed".

The purpose of this enum is providing good ergonomics with std present while making it possible to avoid having a heap at all (which of course means that std is not present). To achieve this, the variants other than Borrowed are only available when the corresponding feature is opted in.

A function that requires a managed object should be generic over an Into<ManagedSlice<'a, T>> argument; then, it will be possible to pass either a Vec<T>, or a &'a mut [T] without any conversion at the call site.

See also Managed.

Variants

Borrowed(&'a mut [T])

Borrowed variant.

Owned(Vec<T>)

Owned variant, only available with the std or alloc feature enabled.

Trait Implementations

impl<'a, T: 'a> Debug for ManagedSlice<'a, T> where
    T: Debug
[src]

impl<'a, T: 'a> Deref for ManagedSlice<'a, T>[src]

type Target = [T]

The resulting type after dereferencing.

impl<'a, T: 'a> DerefMut for ManagedSlice<'a, T>[src]

impl<'a, T: 'a> From<&'a mut [T]> for ManagedSlice<'a, T>[src]

impl<'a, T> From<[T; 0]> for ManagedSlice<'a, T>[src]

impl<'a, T> From<[T; 1]> for ManagedSlice<'a, T>[src]

impl<'a, T> From<[T; 10]> for ManagedSlice<'a, T>[src]

impl<'a, T> From<[T; 11]> for ManagedSlice<'a, T>[src]

impl<'a, T> From<[T; 12]> for ManagedSlice<'a, T>[src]

impl<'a, T> From<[T; 13]> for ManagedSlice<'a, T>[src]

impl<'a, T> From<[T; 14]> for ManagedSlice<'a, T>[src]

impl<'a, T> From<[T; 15]> for ManagedSlice<'a, T>[src]

impl<'a, T> From<[T; 16]> for ManagedSlice<'a, T>[src]

impl<'a, T> From<[T; 17]> for ManagedSlice<'a, T>[src]

impl<'a, T> From<[T; 18]> for ManagedSlice<'a, T>[src]

impl<'a, T> From<[T; 19]> for ManagedSlice<'a, T>[src]

impl<'a, T> From<[T; 2]> for ManagedSlice<'a, T>[src]

impl<'a, T> From<[T; 20]> for ManagedSlice<'a, T>[src]

impl<'a, T> From<[T; 21]> for ManagedSlice<'a, T>[src]

impl<'a, T> From<[T; 22]> for ManagedSlice<'a, T>[src]

impl<'a, T> From<[T; 23]> for ManagedSlice<'a, T>[src]

impl<'a, T> From<[T; 24]> for ManagedSlice<'a, T>[src]

impl<'a, T> From<[T; 25]> for ManagedSlice<'a, T>[src]

impl<'a, T> From<[T; 26]> for ManagedSlice<'a, T>[src]

impl<'a, T> From<[T; 27]> for ManagedSlice<'a, T>[src]

impl<'a, T> From<[T; 28]> for ManagedSlice<'a, T>[src]

impl<'a, T> From<[T; 29]> for ManagedSlice<'a, T>[src]

impl<'a, T> From<[T; 3]> for ManagedSlice<'a, T>[src]

impl<'a, T> From<[T; 30]> for ManagedSlice<'a, T>[src]

impl<'a, T> From<[T; 31]> for ManagedSlice<'a, T>[src]

impl<'a, T> From<[T; 4]> for ManagedSlice<'a, T>[src]

impl<'a, T> From<[T; 5]> for ManagedSlice<'a, T>[src]

impl<'a, T> From<[T; 6]> for ManagedSlice<'a, T>[src]

impl<'a, T> From<[T; 7]> for ManagedSlice<'a, T>[src]

impl<'a, T> From<[T; 8]> for ManagedSlice<'a, T>[src]

impl<'a, T> From<[T; 9]> for ManagedSlice<'a, T>[src]

impl<'a, T: 'a> From<Vec<T>> for ManagedSlice<'a, T>[src]

Auto Trait Implementations

impl<'a, T> RefUnwindSafe for ManagedSlice<'a, T> where
    T: RefUnwindSafe

impl<'a, T> Send for ManagedSlice<'a, T> where
    T: Send

impl<'a, T> Sync for ManagedSlice<'a, T> where
    T: Sync

impl<'a, T> Unpin for ManagedSlice<'a, T> where
    T: Unpin

impl<'a, T> !UnwindSafe for ManagedSlice<'a, T>

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> 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.