Trait golem_rust::Transaction

source ·
pub trait Transaction<Err> {
    // Required methods
    fn execute<OpIn: Clone + 'static, OpOut: Clone + 'static>(
        &mut self,
        operation: impl Operation<In = OpIn, Out = OpOut, Err = Err> + 'static,
        input: OpIn,
    ) -> Result<OpOut, Err>;
    fn fail(&mut self, error: Err) -> Result<(), Err>;
    fn run<Out>(
        f: impl FnOnce(&mut Self) -> Result<Out, Err>,
    ) -> TransactionResult<Out, Err>;
}
Expand description

A unified interface for the different types of transactions. Using it can make the code easier to switch between different transactional guarantees but is more constrained in terms of error types.

Required Methods§

source

fn execute<OpIn: Clone + 'static, OpOut: Clone + 'static>( &mut self, operation: impl Operation<In = OpIn, Out = OpOut, Err = Err> + 'static, input: OpIn, ) -> Result<OpOut, Err>

source

fn fail(&mut self, error: Err) -> Result<(), Err>

source

fn run<Out>( f: impl FnOnce(&mut Self) -> Result<Out, Err>, ) -> TransactionResult<Out, Err>

Object Safety§

This trait is not object safe.

Implementors§

source§

impl<Err: Clone + 'static> Transaction<Err> for FallibleTransaction<Err>

source§

impl<Err: Debug + Clone + 'static> Transaction<Err> for InfallibleTransaction