Skip to main content

TransactionStore

Trait TransactionStore 

Source
pub trait TransactionStore<S: AuthSchema>: Send + Sync {
    // Required method
    fn transaction_boxed<'life0, 'async_trait>(
        &'life0 self,
        work: Box<TransactionWork<S>>,
    ) -> Pin<Box<dyn Future<Output = AuthResult<BoxedTransactionValue>> + Send + 'async_trait>>
       where Self: 'async_trait,
             'life0: 'async_trait;

    // Provided methods
    fn transaction_boxed_with_policy<'life0, 'async_trait>(
        &'life0 self,
        work: Box<TransactionWork<S>>,
        policy: AfterCommitErrorPolicy,
    ) -> Pin<Box<dyn Future<Output = AuthResult<BoxedTransactionValue>> + Send + 'async_trait>>
       where Self: 'async_trait,
             'life0: 'async_trait { ... }
    fn write_transaction_boxed<'life0, 'async_trait>(
        &'life0 self,
        work: Box<TransactionWork<S>>,
    ) -> Pin<Box<dyn Future<Output = AuthResult<BoxedTransactionValue>> + Send + 'async_trait>>
       where Self: 'async_trait,
             'life0: 'async_trait { ... }
}

Required Methods§

Source

fn transaction_boxed<'life0, 'async_trait>( &'life0 self, work: Box<TransactionWork<S>>, ) -> Pin<Box<dyn Future<Output = AuthResult<BoxedTransactionValue>> + Send + 'async_trait>>
where Self: 'async_trait, 'life0: 'async_trait,

Provided Methods§

Source

fn transaction_boxed_with_policy<'life0, 'async_trait>( &'life0 self, work: Box<TransactionWork<S>>, policy: AfterCommitErrorPolicy, ) -> Pin<Box<dyn Future<Output = AuthResult<BoxedTransactionValue>> + Send + 'async_trait>>
where Self: 'async_trait, 'life0: 'async_trait,

Source

fn write_transaction_boxed<'life0, 'async_trait>( &'life0 self, work: Box<TransactionWork<S>>, ) -> Pin<Box<dyn Future<Output = AuthResult<BoxedTransactionValue>> + Send + 'async_trait>>
where Self: 'async_trait, 'life0: 'async_trait,

Run work holding the database write lock from its first statement (SQLite BEGIN IMMEDIATE), so a read-then-write gate cannot deadlock concurrent writers. PostgreSQL row locks need no different start.

Dyn Compatibility§

This trait is dyn compatible.

In older versions of Rust, dyn compatibility was called "object safety".

Implementors§