Trait Bufferable

Source
pub trait Bufferable {
    type BufferType: Buffered;

    // Required method
    fn into_buffer(self, builder: &mut Builder<'_, '_, '_>) -> Self::BufferType;

    // Provided methods
    fn join<'w, 's, 'a, 'b>(
        self,
        builder: &'b mut Builder<'w, 's, 'a>,
    ) -> Chain<'w, 's, 'a, 'b, BufferItem<Self>>
       where Self: Sized,
             Self::BufferType: 'static + Send + Sync,
             BufferItem<Self>: 'static + Send + Sync { ... }
    fn listen<'w, 's, 'a, 'b>(
        self,
        builder: &'b mut Builder<'w, 's, 'a>,
    ) -> Chain<'w, 's, 'a, 'b, BufferKeys<Self>>
       where Self: Sized,
             Self::BufferType: 'static + Send + Sync,
             BufferKeys<Self>: 'static + Send + Sync { ... }
    fn on_cleanup<Settings>(
        self,
        builder: &mut Builder<'_, '_, '_>,
        build: impl FnOnce(Scope<BufferKeys<Self>, (), ()>, &mut Builder<'_, '_, '_>) -> Settings,
    )
       where Self: Sized,
             Self::BufferType: 'static + Send + Sync,
             BufferKeys<Self>: 'static + Send + Sync,
             Settings: Into<ScopeSettings> { ... }
    fn on_cancel<Settings>(
        self,
        builder: &mut Builder<'_, '_, '_>,
        build: impl FnOnce(Scope<BufferKeys<Self>, (), ()>, &mut Builder<'_, '_, '_>) -> Settings,
    )
       where Self: Sized,
             Self::BufferType: 'static + Send + Sync,
             BufferKeys<Self>: 'static + Send + Sync,
             Settings: Into<ScopeSettings> { ... }
    fn on_terminate<Settings>(
        self,
        builder: &mut Builder<'_, '_, '_>,
        build: impl FnOnce(Scope<BufferKeys<Self>, (), ()>, &mut Builder<'_, '_, '_>) -> Settings,
    )
       where Self: Sized,
             Self::BufferType: 'static + Send + Sync,
             BufferKeys<Self>: 'static + Send + Sync,
             Settings: Into<ScopeSettings> { ... }
    fn on_cleanup_if<Settings>(
        self,
        builder: &mut Builder<'_, '_, '_>,
        conditions: CleanupWorkflowConditions,
        build: impl FnOnce(Scope<BufferKeys<Self>, (), ()>, &mut Builder<'_, '_, '_>) -> Settings,
    )
       where Self: Sized,
             Self::BufferType: 'static + Send + Sync,
             BufferKeys<Self>: 'static + Send + Sync,
             Settings: Into<ScopeSettings> { ... }
}

Required Associated Types§

Required Methods§

Source

fn into_buffer(self, builder: &mut Builder<'_, '_, '_>) -> Self::BufferType

Convert these bufferable workflow elements into buffers if they are not buffers already.

Provided Methods§

Source

fn join<'w, 's, 'a, 'b>( self, builder: &'b mut Builder<'w, 's, 'a>, ) -> Chain<'w, 's, 'a, 'b, BufferItem<Self>>
where Self: Sized, Self::BufferType: 'static + Send + Sync, BufferItem<Self>: 'static + Send + Sync,

Join these bufferable workflow elements. Each time every buffer contains at least one element, this will pull the oldest element from each buffer and join them into a tuple that gets sent to the target.

If you need a more general way to get access to one or more buffers, use listen instead.

Source

fn listen<'w, 's, 'a, 'b>( self, builder: &'b mut Builder<'w, 's, 'a>, ) -> Chain<'w, 's, 'a, 'b, BufferKeys<Self>>
where Self: Sized, Self::BufferType: 'static + Send + Sync, BufferKeys<Self>: 'static + Send + Sync,

Create an operation that will output buffer access keys each time any one of the buffers is modified. This can be used to create a node in a workflow that wakes up every time one or more buffers change, and then operates on those buffers.

For an operation that simply joins the contents of two or more outputs or buffers, use join instead.

Source

fn on_cleanup<Settings>( self, builder: &mut Builder<'_, '_, '_>, build: impl FnOnce(Scope<BufferKeys<Self>, (), ()>, &mut Builder<'_, '_, '_>) -> Settings, )
where Self: Sized, Self::BufferType: 'static + Send + Sync, BufferKeys<Self>: 'static + Send + Sync, Settings: Into<ScopeSettings>,

Alternative way to call Builder::on_cleanup.

Source

fn on_cancel<Settings>( self, builder: &mut Builder<'_, '_, '_>, build: impl FnOnce(Scope<BufferKeys<Self>, (), ()>, &mut Builder<'_, '_, '_>) -> Settings, )
where Self: Sized, Self::BufferType: 'static + Send + Sync, BufferKeys<Self>: 'static + Send + Sync, Settings: Into<ScopeSettings>,

Alternative way to call Builder::on_cancel.

Source

fn on_terminate<Settings>( self, builder: &mut Builder<'_, '_, '_>, build: impl FnOnce(Scope<BufferKeys<Self>, (), ()>, &mut Builder<'_, '_, '_>) -> Settings, )
where Self: Sized, Self::BufferType: 'static + Send + Sync, BufferKeys<Self>: 'static + Send + Sync, Settings: Into<ScopeSettings>,

Alternative way to call Builder::on_terminate.

Source

fn on_cleanup_if<Settings>( self, builder: &mut Builder<'_, '_, '_>, conditions: CleanupWorkflowConditions, build: impl FnOnce(Scope<BufferKeys<Self>, (), ()>, &mut Builder<'_, '_, '_>) -> Settings, )
where Self: Sized, Self::BufferType: 'static + Send + Sync, BufferKeys<Self>: 'static + Send + Sync, Settings: Into<ScopeSettings>,

Alternative way to call Builder::on_cleanup_if.

Implementations on Foreign Types§

Source§

impl<T0: Bufferable, T1: Bufferable> Bufferable for (T0, T1)

Source§

type BufferType = (<T0 as Bufferable>::BufferType, <T1 as Bufferable>::BufferType)

Source§

fn into_buffer(self, builder: &mut Builder<'_, '_, '_>) -> Self::BufferType

Source§

impl<T0: Bufferable, T1: Bufferable, T2: Bufferable> Bufferable for (T0, T1, T2)

Source§

type BufferType = (<T0 as Bufferable>::BufferType, <T1 as Bufferable>::BufferType, <T2 as Bufferable>::BufferType)

Source§

fn into_buffer(self, builder: &mut Builder<'_, '_, '_>) -> Self::BufferType

Source§

impl<T0: Bufferable, T1: Bufferable, T2: Bufferable, T3: Bufferable> Bufferable for (T0, T1, T2, T3)

Source§

type BufferType = (<T0 as Bufferable>::BufferType, <T1 as Bufferable>::BufferType, <T2 as Bufferable>::BufferType, <T3 as Bufferable>::BufferType)

Source§

fn into_buffer(self, builder: &mut Builder<'_, '_, '_>) -> Self::BufferType

Source§

impl<T0: Bufferable, T1: Bufferable, T2: Bufferable, T3: Bufferable, T4: Bufferable> Bufferable for (T0, T1, T2, T3, T4)

Source§

type BufferType = (<T0 as Bufferable>::BufferType, <T1 as Bufferable>::BufferType, <T2 as Bufferable>::BufferType, <T3 as Bufferable>::BufferType, <T4 as Bufferable>::BufferType)

Source§

fn into_buffer(self, builder: &mut Builder<'_, '_, '_>) -> Self::BufferType

Source§

impl<T0: Bufferable, T1: Bufferable, T2: Bufferable, T3: Bufferable, T4: Bufferable, T5: Bufferable> Bufferable for (T0, T1, T2, T3, T4, T5)

Source§

type BufferType = (<T0 as Bufferable>::BufferType, <T1 as Bufferable>::BufferType, <T2 as Bufferable>::BufferType, <T3 as Bufferable>::BufferType, <T4 as Bufferable>::BufferType, <T5 as Bufferable>::BufferType)

Source§

fn into_buffer(self, builder: &mut Builder<'_, '_, '_>) -> Self::BufferType

Source§

impl<T0: Bufferable, T1: Bufferable, T2: Bufferable, T3: Bufferable, T4: Bufferable, T5: Bufferable, T6: Bufferable> Bufferable for (T0, T1, T2, T3, T4, T5, T6)

Source§

type BufferType = (<T0 as Bufferable>::BufferType, <T1 as Bufferable>::BufferType, <T2 as Bufferable>::BufferType, <T3 as Bufferable>::BufferType, <T4 as Bufferable>::BufferType, <T5 as Bufferable>::BufferType, <T6 as Bufferable>::BufferType)

Source§

fn into_buffer(self, builder: &mut Builder<'_, '_, '_>) -> Self::BufferType

Source§

impl<T0: Bufferable, T1: Bufferable, T2: Bufferable, T3: Bufferable, T4: Bufferable, T5: Bufferable, T6: Bufferable, T7: Bufferable> Bufferable for (T0, T1, T2, T3, T4, T5, T6, T7)

Source§

type BufferType = (<T0 as Bufferable>::BufferType, <T1 as Bufferable>::BufferType, <T2 as Bufferable>::BufferType, <T3 as Bufferable>::BufferType, <T4 as Bufferable>::BufferType, <T5 as Bufferable>::BufferType, <T6 as Bufferable>::BufferType, <T7 as Bufferable>::BufferType)

Source§

fn into_buffer(self, builder: &mut Builder<'_, '_, '_>) -> Self::BufferType

Source§

impl<T0: Bufferable, T1: Bufferable, T2: Bufferable, T3: Bufferable, T4: Bufferable, T5: Bufferable, T6: Bufferable, T7: Bufferable, T8: Bufferable> Bufferable for (T0, T1, T2, T3, T4, T5, T6, T7, T8)

Source§

type BufferType = (<T0 as Bufferable>::BufferType, <T1 as Bufferable>::BufferType, <T2 as Bufferable>::BufferType, <T3 as Bufferable>::BufferType, <T4 as Bufferable>::BufferType, <T5 as Bufferable>::BufferType, <T6 as Bufferable>::BufferType, <T7 as Bufferable>::BufferType, <T8 as Bufferable>::BufferType)

Source§

fn into_buffer(self, builder: &mut Builder<'_, '_, '_>) -> Self::BufferType

Source§

impl<T0: Bufferable, T1: Bufferable, T2: Bufferable, T3: Bufferable, T4: Bufferable, T5: Bufferable, T6: Bufferable, T7: Bufferable, T8: Bufferable, T9: Bufferable> Bufferable for (T0, T1, T2, T3, T4, T5, T6, T7, T8, T9)

Source§

type BufferType = (<T0 as Bufferable>::BufferType, <T1 as Bufferable>::BufferType, <T2 as Bufferable>::BufferType, <T3 as Bufferable>::BufferType, <T4 as Bufferable>::BufferType, <T5 as Bufferable>::BufferType, <T6 as Bufferable>::BufferType, <T7 as Bufferable>::BufferType, <T8 as Bufferable>::BufferType, <T9 as Bufferable>::BufferType)

Source§

fn into_buffer(self, builder: &mut Builder<'_, '_, '_>) -> Self::BufferType

Source§

impl<T0: Bufferable, T1: Bufferable, T2: Bufferable, T3: Bufferable, T4: Bufferable, T5: Bufferable, T6: Bufferable, T7: Bufferable, T8: Bufferable, T9: Bufferable, T10: Bufferable> Bufferable for (T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10)

Source§

type BufferType = (<T0 as Bufferable>::BufferType, <T1 as Bufferable>::BufferType, <T2 as Bufferable>::BufferType, <T3 as Bufferable>::BufferType, <T4 as Bufferable>::BufferType, <T5 as Bufferable>::BufferType, <T6 as Bufferable>::BufferType, <T7 as Bufferable>::BufferType, <T8 as Bufferable>::BufferType, <T9 as Bufferable>::BufferType, <T10 as Bufferable>::BufferType)

Source§

fn into_buffer(self, builder: &mut Builder<'_, '_, '_>) -> Self::BufferType

Source§

impl<T0: Bufferable, T1: Bufferable, T2: Bufferable, T3: Bufferable, T4: Bufferable, T5: Bufferable, T6: Bufferable, T7: Bufferable, T8: Bufferable, T9: Bufferable, T10: Bufferable, T11: Bufferable> Bufferable for (T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11)

Source§

type BufferType = (<T0 as Bufferable>::BufferType, <T1 as Bufferable>::BufferType, <T2 as Bufferable>::BufferType, <T3 as Bufferable>::BufferType, <T4 as Bufferable>::BufferType, <T5 as Bufferable>::BufferType, <T6 as Bufferable>::BufferType, <T7 as Bufferable>::BufferType, <T8 as Bufferable>::BufferType, <T9 as Bufferable>::BufferType, <T10 as Bufferable>::BufferType, <T11 as Bufferable>::BufferType)

Source§

fn into_buffer(self, builder: &mut Builder<'_, '_, '_>) -> Self::BufferType

Source§

impl<T: Bufferable, const N: usize> Bufferable for [T; N]

Source§

type BufferType = [<T as Bufferable>::BufferType; N]

Source§

fn into_buffer(self, builder: &mut Builder<'_, '_, '_>) -> Self::BufferType

Implementors§

Source§

impl<T: 'static + Send + Sync + Clone> Bufferable for CloneFromBuffer<T>

Source§

impl<T: 'static + Send + Sync> Bufferable for Output<T>

Source§

impl<T: 'static + Send + Sync> Bufferable for Buffer<T>