RusqliteConnectionExt

Trait RusqliteConnectionExt 

Source
pub trait RusqliteConnectionExt {
    // Required methods
    fn with_transaction<R, E>(
        &mut self,
        _: &Timeout,
        _: TransactionBehavior,
        _: impl Fn(&mut DbTransaction<'_>) -> Result<R, DbError<E>>,
    ) -> Result<R, DbError<E>>;
    fn with_transaction_mut_hazard<R, E>(
        &mut self,
        _: &Timeout,
        _: TransactionBehavior,
        _: impl FnMut(&mut DbTransaction<'_>) -> Result<R, DbError<E>>,
    ) -> Result<R, DbError<E>>;
}
Expand description

Execute a database transaction

Performs all necessary retries, so f may be called multiple times

Required Methods§

Source

fn with_transaction<R, E>( &mut self, _: &Timeout, _: TransactionBehavior, _: impl Fn(&mut DbTransaction<'_>) -> Result<R, DbError<E>>, ) -> Result<R, DbError<E>>

Run f within a database transaction

Source

fn with_transaction_mut_hazard<R, E>( &mut self, _: &Timeout, _: TransactionBehavior, _: impl FnMut(&mut DbTransaction<'_>) -> Result<R, DbError<E>>, ) -> Result<R, DbError<E>>

Run a mutable f within a database transaction

f can be called multiple times to retry, on database timeout or deadlock. So be careful what you mutate within f!

Dyn Compatibility§

This trait is not dyn compatible.

In older versions of Rust, dyn compatibility was called "object safety", so this trait is not object safe.

Implementations on Foreign Types§

Source§

impl RusqliteConnectionExt for Connection

Source§

fn with_transaction<R, E>( &mut self, timeout: &Timeout, behaviour: TransactionBehavior, f: impl Fn(&mut DbTransaction<'_>) -> Result<R, DbError<E>>, ) -> Result<R, DbError<E>>

Source§

fn with_transaction_mut_hazard<R, E>( &mut self, timeout: &Timeout, behaviour: TransactionBehavior, f: impl FnMut(&mut DbTransaction<'_>) -> Result<R, DbError<E>>, ) -> Result<R, DbError<E>>

Implementors§