Skip to main content

Slicable

Trait Slicable 

Source
pub trait Slicable<'a, L: Location<'a>> {
    type Slice;
    type Backtrace;

    // Required methods
    fn preferred_tick(&self) -> Option<Tick<L>>;
    fn get_location(&self) -> &L;
    fn slice(self, tick: &Tick<L>, backtrace: Self::Backtrace) -> Self::Slice;

    // Provided method
    fn create_tick(&self) -> Tick<L>
       where L: NoTick { ... }
}
Expand description

A trait for live collections which can be sliced into bounded versions at a tick.

Required Associated Types§

Source

type Slice

The sliced version of this live collection.

Source

type Backtrace

The type of backtrace associated with this slice.

Required Methods§

Source

fn preferred_tick(&self) -> Option<Tick<L>>

Gets the preferred tick to slice at. Used for atomic slicing.

Source

fn get_location(&self) -> &L

Gets the location associated with this live collection.

Source

fn slice(self, tick: &Tick<L>, backtrace: Self::Backtrace) -> Self::Slice

Slices this live collection at the given tick.

§Non-Determinism

Slicing a live collection may involve non-determinism, such as choosing which messages to include in a batch.

Provided Methods§

Source

fn create_tick(&self) -> Tick<L>
where L: NoTick,

Creates a tick that is appropriate for the collection’s location.

Implementations on Foreign Types§

Source§

impl<'a, L: Location<'a>> Slicable<'a, L> for ()

Source§

type Slice = ()

Source§

type Backtrace = ()

Source§

fn get_location(&self) -> &L

Source§

fn preferred_tick(&self) -> Option<Tick<L>>

Source§

fn slice(self, _tick: &Tick<L>, _backtrace: Self::Backtrace) -> Self::Slice

Source§

impl<'a, L: Location<'a>, S1: Slicable<'a, L>> Slicable<'a, L> for (S1,)

Source§

type Slice = (<S1 as Slicable<'a, L>>::Slice,)

Source§

type Backtrace = (<S1 as Slicable<'a, L>>::Backtrace,)

Source§

fn get_location(&self) -> &L

Source§

fn preferred_tick(&self) -> Option<Tick<L>>

Source§

fn slice(self, tick: &Tick<L>, backtrace: Self::Backtrace) -> Self::Slice

Source§

impl<'a, L: Location<'a>, S1: Slicable<'a, L>, S2: Slicable<'a, L>> Slicable<'a, L> for (S1, S2)

Source§

type Slice = (<S1 as Slicable<'a, L>>::Slice, <S2 as Slicable<'a, L>>::Slice)

Source§

type Backtrace = (<S1 as Slicable<'a, L>>::Backtrace, <S2 as Slicable<'a, L>>::Backtrace)

Source§

fn get_location(&self) -> &L

Source§

fn preferred_tick(&self) -> Option<Tick<L>>

Source§

fn slice(self, tick: &Tick<L>, backtrace: Self::Backtrace) -> Self::Slice

Source§

impl<'a, L: Location<'a>, S1: Slicable<'a, L>, S2: Slicable<'a, L>, S3: Slicable<'a, L>> Slicable<'a, L> for (S1, S2, S3)

Source§

type Slice = (<S1 as Slicable<'a, L>>::Slice, <S2 as Slicable<'a, L>>::Slice, <S3 as Slicable<'a, L>>::Slice)

Source§

type Backtrace = (<S1 as Slicable<'a, L>>::Backtrace, <S2 as Slicable<'a, L>>::Backtrace, <S3 as Slicable<'a, L>>::Backtrace)

Source§

fn get_location(&self) -> &L

Source§

fn preferred_tick(&self) -> Option<Tick<L>>

Source§

fn slice(self, tick: &Tick<L>, backtrace: Self::Backtrace) -> Self::Slice

Source§

impl<'a, L: Location<'a>, S1: Slicable<'a, L>, S2: Slicable<'a, L>, S3: Slicable<'a, L>, S4: Slicable<'a, L>> Slicable<'a, L> for (S1, S2, S3, S4)

Source§

type Slice = (<S1 as Slicable<'a, L>>::Slice, <S2 as Slicable<'a, L>>::Slice, <S3 as Slicable<'a, L>>::Slice, <S4 as Slicable<'a, L>>::Slice)

Source§

type Backtrace = (<S1 as Slicable<'a, L>>::Backtrace, <S2 as Slicable<'a, L>>::Backtrace, <S3 as Slicable<'a, L>>::Backtrace, <S4 as Slicable<'a, L>>::Backtrace)

Source§

fn get_location(&self) -> &L

Source§

fn preferred_tick(&self) -> Option<Tick<L>>

Source§

fn slice(self, tick: &Tick<L>, backtrace: Self::Backtrace) -> Self::Slice

Source§

impl<'a, L: Location<'a>, S1: Slicable<'a, L>, S2: Slicable<'a, L>, S3: Slicable<'a, L>, S4: Slicable<'a, L>, S5: Slicable<'a, L>> Slicable<'a, L> for (S1, S2, S3, S4, S5)

Source§

type Slice = (<S1 as Slicable<'a, L>>::Slice, <S2 as Slicable<'a, L>>::Slice, <S3 as Slicable<'a, L>>::Slice, <S4 as Slicable<'a, L>>::Slice, <S5 as Slicable<'a, L>>::Slice)

Source§

type Backtrace = (<S1 as Slicable<'a, L>>::Backtrace, <S2 as Slicable<'a, L>>::Backtrace, <S3 as Slicable<'a, L>>::Backtrace, <S4 as Slicable<'a, L>>::Backtrace, <S5 as Slicable<'a, L>>::Backtrace)

Source§

fn get_location(&self) -> &L

Source§

fn preferred_tick(&self) -> Option<Tick<L>>

Source§

fn slice(self, tick: &Tick<L>, backtrace: Self::Backtrace) -> Self::Slice

Implementors§

Source§

impl<'a, K, V, L: Location<'a> + NoTick> Slicable<'a, L> for Atomic<KeyedSingleton<K, V, Atomic<L>, Unbounded>>

Source§

impl<'a, K, V, L: Location<'a> + NoTick> Slicable<'a, L> for Atomic<KeyedSingleton<K, V, Atomic<L>, BoundedValue>>

Source§

impl<'a, K, V, L: Location<'a> + NoTick> Slicable<'a, L> for Default<KeyedSingleton<K, V, L, BoundedValue>>

Source§

impl<'a, K, V, L: Location<'a> + NoTick, O: Ordering, R: Retries> Slicable<'a, L> for Atomic<KeyedStream<K, V, Atomic<L>, Unbounded, O, R>>

Source§

impl<'a, K, V, L: Location<'a>> Slicable<'a, L> for Default<KeyedSingleton<K, V, L, Unbounded>>

Source§

impl<'a, K, V, L: Location<'a>, O: Ordering, R: Retries> Slicable<'a, L> for Default<KeyedStream<K, V, L, Unbounded, O, R>>

Source§

impl<'a, T, L: Location<'a> + NoTick> Slicable<'a, L> for Atomic<Optional<T, Atomic<L>, Unbounded>>

Source§

impl<'a, T, L: Location<'a> + NoTick> Slicable<'a, L> for Atomic<Singleton<T, Atomic<L>, Unbounded>>

Source§

impl<'a, T, L: Location<'a> + NoTick, O: Ordering, R: Retries> Slicable<'a, L> for Atomic<Stream<T, Atomic<L>, Unbounded, O, R>>

Source§

impl<'a, T, L: Location<'a>, B: Boundedness> Slicable<'a, L> for Default<Optional<T, L, B>>

Source§

impl<'a, T, L: Location<'a>, B: Boundedness> Slicable<'a, L> for Default<Singleton<T, L, B>>

Source§

impl<'a, T, L: Location<'a>, B: Boundedness, O: Ordering, R: Retries> Slicable<'a, L> for Default<Stream<T, L, B, O, R>>