Trait consume_ptr::Consume

source ·
pub unsafe trait Consume<Target: ?Sized>: TryConsume<Target> {
    // Required method
    fn consume_unsized<T>(self, f: impl FnOnce(*mut Target) -> T) -> T;

    // Provided methods
    fn consume(self) -> Target
       where Target: Sized { ... }
    fn into_owned(self) -> <Target as ToOwned>::Owned
       where Target: ToOwned,
             <Target as ToOwned>::Owned: FromConsume<Target> { ... }
}

Required Methods§

source

fn consume_unsized<T>(self, f: impl FnOnce(*mut Target) -> T) -> T

Target is never read after this call

Provided Methods§

source

fn consume(self) -> Targetwhere Target: Sized,

source

fn into_owned(self) -> <Target as ToOwned>::Ownedwhere Target: ToOwned, <Target as ToOwned>::Owned: FromConsume<Target>,

Implementations on Foreign Types§

source§

impl Consume<CStr> for CString

source§

fn consume_unsized<T>(self, f: impl FnOnce(*mut CStr) -> T) -> T

source§

fn into_owned(self) -> CString

source§

impl Consume<Path> for PathBuf

source§

fn consume_unsized<T>(self, f: impl FnOnce(*mut Path) -> T) -> T

source§

fn into_owned(self) -> Self

source§

impl<T> Consume<[T]> for Vec<T>where [T]: ToOwned<Owned = Vec<T>>,

source§

fn consume_unsized<U>(self, f: impl FnOnce(*mut [T]) -> U) -> U

source§

fn into_owned(self) -> <[T] as ToOwned>::Owned

source§

impl Consume<OsStr> for OsString

source§

fn consume_unsized<T>(self, f: impl FnOnce(*mut OsStr) -> T) -> T

source§

fn into_owned(self) -> OsString

source§

impl Consume<str> for String

source§

fn consume_unsized<T>(self, f: impl FnOnce(*mut str) -> T) -> T

source§

fn into_owned(self) -> String

source§

impl<T: ?Sized> Consume<T> for Box<T>

source§

fn consume_unsized<U>(self, f: impl FnOnce(*mut T) -> U) -> U

source§

fn consume(self) -> Twhere T: Sized,

Implementors§

source§

impl<T> Consume<T> for T