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,
        nondet: NonDet,
    ) -> Self::Slice;
}
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, nondet: NonDet, ) -> 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. The provided nondet parameter should be used to explain the impact of this non-determinism on the program’s behavior.

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, _nondet: NonDet, ) -> 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, nondet: NonDet, ) -> 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, nondet: NonDet, ) -> 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, nondet: NonDet, ) -> 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, nondet: NonDet, ) -> 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, nondet: NonDet, ) -> Self::Slice

Implementors§

Source§

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

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>> Slicable<'a, L> for KeyedSingleton<K, V, L, Unbounded>

Source§

impl<'a, K, V, L: Location<'a>, O: Ordering, R: Retries> Slicable<'a, L> for 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>> Slicable<'a, L> for Optional<T, L, Unbounded>

Source§

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

Source§

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