Trait borrow_bag::Append

source ·
pub trait Append<T> {
    type Output: PrefixedWith<Self> + Lookup<T, Self::Navigator>;
    type Navigator;

    // Required method
    fn append(self, t: T) -> (Self::Output, Handle<T, Self::Navigator>);
}
Expand description

Describes the result of appending T to the borrow-bag. This is useful in specifying the return type when creating/modifying a BorrowBag in a function.

Examples

type SingleItemBag<T> = BorrowBag<(T, ())>;
type SingleItemHandle<T> = Handle<T, <() as Append<T>>::Navigator>;

fn single_item_bag<T>(t: T) -> (SingleItemBag<T>, SingleItemHandle<T>) {
    BorrowBag::new().add(t)
}

Required Associated Types§

source

type Output: PrefixedWith<Self> + Lookup<T, Self::Navigator>

The resulting BorrowBag type parameter after adding an element of type T.

source

type Navigator

A type describing how to borrow the T which is added.

If the output type is (X, (Y, (Z, ()))), we’re adding the Z and so our Navigator will be (Skip, (Skip, Take))

Required Methods§

source

fn append(self, t: T) -> (Self::Output, Handle<T, Self::Navigator>)

Append the element, returning a new collection and a handle to borrow the element back.

Implementations on Foreign Types§

source§

impl<T> Append<T> for ()

§

type Output = (T, ())

§

type Navigator = Take

source§

fn append(self, t: T) -> (Self::Output, Handle<T, Self::Navigator>)

source§

impl<T, U, V> Append<T> for (U, V)where V: Append<T>,

§

type Output = (U, <V as Append<T>>::Output)

§

type Navigator = (Skip, <V as Append<T>>::Navigator)

source§

fn append(self, t: T) -> (Self::Output, Handle<T, Self::Navigator>)

Implementors§