[][src]Struct drone_core::inventory::Inventory

#[repr(transparent)]
pub struct Inventory<T: Item, C> { /* fields omitted */ }

The inventory wrapper for T. Parameter C encodes the number of emitted tokens.

See the module-level documentation for details.

Methods

impl<T: Item> Inventory<T, Count0>[src]

pub fn new(item: T) -> Self[src]

Creates a new Inventory in the inactive state with zero tokens emitted.

item should contain some form of token.

pub fn free(inventory: Self) -> T[src]

Drops inventory and returns the stored item.

pub fn guard(inventory: &mut Self) -> Guard<T>[src]

Creates an RAII scoped guard.

The item should be already in its active state. The returned guard will call Item::teardown on drop.

pub fn teardown(inventory: &mut Self)[src]

Calls Item::teardown for the stored item.

impl<T: Item, C> Inventory<T, C>[src]

pub fn inventory_token(&self) -> &Token<T>[src]

Returns a reference to Token<T>. While the reference exists, the item is always in its active state.

impl<T: Item> Inventory<T, Count0>[src]

pub fn share1(self) -> (Inventory<T, Count1>, Token<T>)[src]

Returns a token and a new inventory object with increased counter in its type.

impl<T: Item> Inventory<T, Count1>[src]

pub fn share1(self) -> (Inventory<T, Count2>, Token<T>)[src]

Returns a token and a new inventory object with increased counter in its type.

pub fn share2(self) -> (Inventory<T, Count3>, Token<T>, Token<T>)[src]

Returns a token and a new inventory object with increased counter in its type.

pub fn share3(self) -> (Inventory<T, Count4>, Token<T>, Token<T>, Token<T>)[src]

Returns a token and a new inventory object with increased counter in its type.

pub fn share4(
    self
) -> (Inventory<T, Count5>, Token<T>, Token<T>, Token<T>, Token<T>)
[src]

Returns a token and a new inventory object with increased counter in its type.

pub fn share5(
    self
) -> (Inventory<T, Count6>, Token<T>, Token<T>, Token<T>, Token<T>, Token<T>)
[src]

Returns a token and a new inventory object with increased counter in its type.

pub fn share6(
    self
) -> (Inventory<T, Count7>, Token<T>, Token<T>, Token<T>, Token<T>, Token<T>, Token<T>)
[src]

Returns a token and a new inventory object with increased counter in its type.

pub fn share7(
    self
) -> (Inventory<T, Count8>, Token<T>, Token<T>, Token<T>, Token<T>, Token<T>, Token<T>, Token<T>)
[src]

Returns a token and a new inventory object with increased counter in its type.

pub fn share8(
    self
) -> (Inventory<T, Count9>, Token<T>, Token<T>, Token<T>, Token<T>, Token<T>, Token<T>, Token<T>, Token<T>)
[src]

Returns a token and a new inventory object with increased counter in its type.

pub fn merge1(self, a: Token<T>) -> Inventory<T, Count0>[src]

Consumes a token and returns a new inventory object with decreased counter in its type.

impl<T: Item> Inventory<T, Count2>[src]

pub fn share1(self) -> (Inventory<T, Count3>, Token<T>)[src]

Returns a token and a new inventory object with increased counter in its type.

pub fn share2(self) -> (Inventory<T, Count4>, Token<T>, Token<T>)[src]

Returns a token and a new inventory object with increased counter in its type.

pub fn share3(self) -> (Inventory<T, Count5>, Token<T>, Token<T>, Token<T>)[src]

Returns a token and a new inventory object with increased counter in its type.

pub fn share4(
    self
) -> (Inventory<T, Count6>, Token<T>, Token<T>, Token<T>, Token<T>)
[src]

Returns a token and a new inventory object with increased counter in its type.

pub fn share5(
    self
) -> (Inventory<T, Count7>, Token<T>, Token<T>, Token<T>, Token<T>, Token<T>)
[src]

Returns a token and a new inventory object with increased counter in its type.

pub fn share6(
    self
) -> (Inventory<T, Count8>, Token<T>, Token<T>, Token<T>, Token<T>, Token<T>, Token<T>)
[src]

Returns a token and a new inventory object with increased counter in its type.

pub fn share7(
    self
) -> (Inventory<T, Count9>, Token<T>, Token<T>, Token<T>, Token<T>, Token<T>, Token<T>, Token<T>)
[src]

Returns a token and a new inventory object with increased counter in its type.

pub fn merge1(self, a: Token<T>) -> Inventory<T, Count1>[src]

Consumes a token and returns a new inventory object with decreased counter in its type.

impl<T: Item> Inventory<T, Count3>[src]

pub fn share1(self) -> (Inventory<T, Count4>, Token<T>)[src]

Returns a token and a new inventory object with increased counter in its type.

pub fn share2(self) -> (Inventory<T, Count5>, Token<T>, Token<T>)[src]

Returns a token and a new inventory object with increased counter in its type.

pub fn share3(self) -> (Inventory<T, Count6>, Token<T>, Token<T>, Token<T>)[src]

Returns a token and a new inventory object with increased counter in its type.

pub fn share4(
    self
) -> (Inventory<T, Count7>, Token<T>, Token<T>, Token<T>, Token<T>)
[src]

Returns a token and a new inventory object with increased counter in its type.

pub fn share5(
    self
) -> (Inventory<T, Count8>, Token<T>, Token<T>, Token<T>, Token<T>, Token<T>)
[src]

Returns a token and a new inventory object with increased counter in its type.

pub fn share6(
    self
) -> (Inventory<T, Count9>, Token<T>, Token<T>, Token<T>, Token<T>, Token<T>, Token<T>)
[src]

Returns a token and a new inventory object with increased counter in its type.

pub fn merge1(self, a: Token<T>) -> Inventory<T, Count2>[src]

Consumes a token and returns a new inventory object with decreased counter in its type.

pub fn merge2(self, a: Token<T>, b: Token<T>) -> Inventory<T, Count1>[src]

Consumes a token and returns a new inventory object with decreased counter in its type.

impl<T: Item> Inventory<T, Count4>[src]

pub fn share1(self) -> (Inventory<T, Count5>, Token<T>)[src]

Returns a token and a new inventory object with increased counter in its type.

pub fn share2(self) -> (Inventory<T, Count6>, Token<T>, Token<T>)[src]

Returns a token and a new inventory object with increased counter in its type.

pub fn share3(self) -> (Inventory<T, Count7>, Token<T>, Token<T>, Token<T>)[src]

Returns a token and a new inventory object with increased counter in its type.

pub fn share4(
    self
) -> (Inventory<T, Count8>, Token<T>, Token<T>, Token<T>, Token<T>)
[src]

Returns a token and a new inventory object with increased counter in its type.

pub fn share5(
    self
) -> (Inventory<T, Count9>, Token<T>, Token<T>, Token<T>, Token<T>, Token<T>)
[src]

Returns a token and a new inventory object with increased counter in its type.

pub fn merge1(self, a: Token<T>) -> Inventory<T, Count3>[src]

Consumes a token and returns a new inventory object with decreased counter in its type.

pub fn merge2(self, a: Token<T>, b: Token<T>) -> Inventory<T, Count2>[src]

Consumes a token and returns a new inventory object with decreased counter in its type.

pub fn merge3(
    self,
    a: Token<T>,
    b: Token<T>,
    c: Token<T>
) -> Inventory<T, Count1>
[src]

Consumes a token and returns a new inventory object with decreased counter in its type.

impl<T: Item> Inventory<T, Count5>[src]

pub fn share1(self) -> (Inventory<T, Count6>, Token<T>)[src]

Returns a token and a new inventory object with increased counter in its type.

pub fn share2(self) -> (Inventory<T, Count7>, Token<T>, Token<T>)[src]

Returns a token and a new inventory object with increased counter in its type.

pub fn share3(self) -> (Inventory<T, Count8>, Token<T>, Token<T>, Token<T>)[src]

Returns a token and a new inventory object with increased counter in its type.

pub fn share4(
    self
) -> (Inventory<T, Count9>, Token<T>, Token<T>, Token<T>, Token<T>)
[src]

Returns a token and a new inventory object with increased counter in its type.

pub fn merge1(self, a: Token<T>) -> Inventory<T, Count4>[src]

Consumes a token and returns a new inventory object with decreased counter in its type.

pub fn merge2(self, a: Token<T>, b: Token<T>) -> Inventory<T, Count3>[src]

Consumes a token and returns a new inventory object with decreased counter in its type.

pub fn merge3(
    self,
    a: Token<T>,
    b: Token<T>,
    c: Token<T>
) -> Inventory<T, Count2>
[src]

Consumes a token and returns a new inventory object with decreased counter in its type.

pub fn merge4(
    self,
    a: Token<T>,
    b: Token<T>,
    c: Token<T>,
    d: Token<T>
) -> Inventory<T, Count1>
[src]

Consumes a token and returns a new inventory object with decreased counter in its type.

impl<T: Item> Inventory<T, Count6>[src]

pub fn share1(self) -> (Inventory<T, Count7>, Token<T>)[src]

Returns a token and a new inventory object with increased counter in its type.

pub fn share2(self) -> (Inventory<T, Count8>, Token<T>, Token<T>)[src]

Returns a token and a new inventory object with increased counter in its type.

pub fn share3(self) -> (Inventory<T, Count9>, Token<T>, Token<T>, Token<T>)[src]

Returns a token and a new inventory object with increased counter in its type.

pub fn merge1(self, a: Token<T>) -> Inventory<T, Count5>[src]

Consumes a token and returns a new inventory object with decreased counter in its type.

pub fn merge2(self, a: Token<T>, b: Token<T>) -> Inventory<T, Count4>[src]

Consumes a token and returns a new inventory object with decreased counter in its type.

pub fn merge3(
    self,
    a: Token<T>,
    b: Token<T>,
    c: Token<T>
) -> Inventory<T, Count3>
[src]

Consumes a token and returns a new inventory object with decreased counter in its type.

pub fn merge4(
    self,
    a: Token<T>,
    b: Token<T>,
    c: Token<T>,
    d: Token<T>
) -> Inventory<T, Count2>
[src]

Consumes a token and returns a new inventory object with decreased counter in its type.

pub fn merge5(
    self,
    a: Token<T>,
    b: Token<T>,
    c: Token<T>,
    d: Token<T>,
    e: Token<T>
) -> Inventory<T, Count1>
[src]

Consumes a token and returns a new inventory object with decreased counter in its type.

impl<T: Item> Inventory<T, Count7>[src]

pub fn share1(self) -> (Inventory<T, Count8>, Token<T>)[src]

Returns a token and a new inventory object with increased counter in its type.

pub fn share2(self) -> (Inventory<T, Count9>, Token<T>, Token<T>)[src]

Returns a token and a new inventory object with increased counter in its type.

pub fn merge1(self, a: Token<T>) -> Inventory<T, Count6>[src]

Consumes a token and returns a new inventory object with decreased counter in its type.

pub fn merge2(self, a: Token<T>, b: Token<T>) -> Inventory<T, Count5>[src]

Consumes a token and returns a new inventory object with decreased counter in its type.

pub fn merge3(
    self,
    a: Token<T>,
    b: Token<T>,
    c: Token<T>
) -> Inventory<T, Count4>
[src]

Consumes a token and returns a new inventory object with decreased counter in its type.

pub fn merge4(
    self,
    a: Token<T>,
    b: Token<T>,
    c: Token<T>,
    d: Token<T>
) -> Inventory<T, Count3>
[src]

Consumes a token and returns a new inventory object with decreased counter in its type.

pub fn merge5(
    self,
    a: Token<T>,
    b: Token<T>,
    c: Token<T>,
    d: Token<T>,
    e: Token<T>
) -> Inventory<T, Count2>
[src]

Consumes a token and returns a new inventory object with decreased counter in its type.

pub fn merge6(
    self,
    a: Token<T>,
    b: Token<T>,
    c: Token<T>,
    d: Token<T>,
    e: Token<T>,
    f: Token<T>
) -> Inventory<T, Count1>
[src]

Consumes a token and returns a new inventory object with decreased counter in its type.

impl<T: Item> Inventory<T, Count8>[src]

pub fn share1(self) -> (Inventory<T, Count9>, Token<T>)[src]

Returns a token and a new inventory object with increased counter in its type.

pub fn merge1(self, a: Token<T>) -> Inventory<T, Count7>[src]

Consumes a token and returns a new inventory object with decreased counter in its type.

pub fn merge2(self, a: Token<T>, b: Token<T>) -> Inventory<T, Count6>[src]

Consumes a token and returns a new inventory object with decreased counter in its type.

pub fn merge3(
    self,
    a: Token<T>,
    b: Token<T>,
    c: Token<T>
) -> Inventory<T, Count5>
[src]

Consumes a token and returns a new inventory object with decreased counter in its type.

pub fn merge4(
    self,
    a: Token<T>,
    b: Token<T>,
    c: Token<T>,
    d: Token<T>
) -> Inventory<T, Count4>
[src]

Consumes a token and returns a new inventory object with decreased counter in its type.

pub fn merge5(
    self,
    a: Token<T>,
    b: Token<T>,
    c: Token<T>,
    d: Token<T>,
    e: Token<T>
) -> Inventory<T, Count3>
[src]

Consumes a token and returns a new inventory object with decreased counter in its type.

pub fn merge6(
    self,
    a: Token<T>,
    b: Token<T>,
    c: Token<T>,
    d: Token<T>,
    e: Token<T>,
    f: Token<T>
) -> Inventory<T, Count2>
[src]

Consumes a token and returns a new inventory object with decreased counter in its type.

pub fn merge7(
    self,
    a: Token<T>,
    b: Token<T>,
    c: Token<T>,
    d: Token<T>,
    e: Token<T>,
    f: Token<T>,
    g: Token<T>
) -> Inventory<T, Count1>
[src]

Consumes a token and returns a new inventory object with decreased counter in its type.

impl<T: Item> Inventory<T, Count9>[src]

pub fn merge1(self, a: Token<T>) -> Inventory<T, Count8>[src]

Consumes a token and returns a new inventory object with decreased counter in its type.

pub fn merge2(self, a: Token<T>, b: Token<T>) -> Inventory<T, Count7>[src]

Consumes a token and returns a new inventory object with decreased counter in its type.

pub fn merge3(
    self,
    a: Token<T>,
    b: Token<T>,
    c: Token<T>
) -> Inventory<T, Count6>
[src]

Consumes a token and returns a new inventory object with decreased counter in its type.

pub fn merge4(
    self,
    a: Token<T>,
    b: Token<T>,
    c: Token<T>,
    d: Token<T>
) -> Inventory<T, Count5>
[src]

Consumes a token and returns a new inventory object with decreased counter in its type.

pub fn merge5(
    self,
    a: Token<T>,
    b: Token<T>,
    c: Token<T>,
    d: Token<T>,
    e: Token<T>
) -> Inventory<T, Count4>
[src]

Consumes a token and returns a new inventory object with decreased counter in its type.

pub fn merge6(
    self,
    a: Token<T>,
    b: Token<T>,
    c: Token<T>,
    d: Token<T>,
    e: Token<T>,
    f: Token<T>
) -> Inventory<T, Count3>
[src]

Consumes a token and returns a new inventory object with decreased counter in its type.

pub fn merge7(
    self,
    a: Token<T>,
    b: Token<T>,
    c: Token<T>,
    d: Token<T>,
    e: Token<T>,
    f: Token<T>,
    g: Token<T>
) -> Inventory<T, Count2>
[src]

Consumes a token and returns a new inventory object with decreased counter in its type.

pub fn merge8(
    self,
    a: Token<T>,
    b: Token<T>,
    c: Token<T>,
    d: Token<T>,
    e: Token<T>,
    f: Token<T>,
    g: Token<T>,
    h: Token<T>
) -> Inventory<T, Count1>
[src]

Consumes a token and returns a new inventory object with decreased counter in its type.

Trait Implementations

impl<T: Item, C> Deref for Inventory<T, C>[src]

type Target = T

The resulting type after dereferencing.

impl<T: Item, C> DerefMut for Inventory<T, C>[src]

Auto Trait Implementations

impl<T, C> Unpin for Inventory<T, C> where
    C: Unpin,
    T: Unpin

impl<T, C> Send for Inventory<T, C> where
    C: Send,
    T: Send

impl<T, C> Sync for Inventory<T, C> where
    C: Sync,
    T: Sync

Blanket Implementations

impl<T> From<T> for 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> Into<U> for T where
    U: From<T>, 
[src]

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.

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

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

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