pub struct LazyDb<CI> { /* private fields */ }
Expand description
Lazily-loaded database with interruption support
In addition to the Self::interrupt method, LazyDb also calls [interrupt_support::register_interrupt] on any opened database. This means that if [interrupt_support::shutdown] is called it will interrupt this database if it’s open and in-use.
Implementations§
source§impl<CI: ConnectionInitializer> LazyDb<CI>
impl<CI: ConnectionInitializer> LazyDb<CI>
sourcepub fn new(
path: &Path,
open_flags: OpenFlags,
connection_initializer: CI,
) -> Self
pub fn new( path: &Path, open_flags: OpenFlags, connection_initializer: CI, ) -> Self
Create a new LazyDb
This does not open the connection and is non-blocking
sourcepub fn lock(
&self,
) -> Result<(MappedMutexGuard<'_, Connection>, SqlInterruptScope), Error>
pub fn lock( &self, ) -> Result<(MappedMutexGuard<'_, Connection>, SqlInterruptScope), Error>
Lock the database mutex and get a connection and interrupt scope.
If the connection is closed, it will be opened.
Calling lock
again, or calling close
, from the same thread while the mutex guard is
still alive will cause a deadlock.
Auto Trait Implementations§
impl<CI> !Freeze for LazyDb<CI>
impl<CI> !RefUnwindSafe for LazyDb<CI>
impl<CI> Send for LazyDb<CI>where
CI: Send,
impl<CI> Sync for LazyDb<CI>where
CI: Sync,
impl<CI> Unpin for LazyDb<CI>where
CI: Unpin,
impl<CI> !UnwindSafe for LazyDb<CI>
Blanket Implementations§
source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more