use crate::{Connection, Result}; /// `feature = "load_extension"` RAII guard temporarily enabling SQLite /// extensions to be loaded. /// /// ## Example /// /// ```rust,no_run /// # use rusqlite::{Connection, Result, LoadExtensionGuard}; /// # use std::path::{Path}; /// fn load_my_extension(conn: &Connection) -> Result<()> { /// let _guard = LoadExtensionGuard::new(conn)?; /// /// conn.load_extension(Path::new("my_sqlite_extension"), None) /// } /// ``` pub struct LoadExtensionGuard<'conn> { conn: &'conn Connection, } impl LoadExtensionGuard<'_> { /// Attempt to enable loading extensions. Loading extensions will be /// disabled when this guard goes out of scope. Cannot be meaningfully /// nested. #[inline] pub fn new(conn: &Connection) -> Result> { conn.load_extension_enable() .map(|_| LoadExtensionGuard { conn }) } } #[allow(unused_must_use)] impl Drop for LoadExtensionGuard<'_> { #[inline] fn drop(&mut self) { self.conn.load_extension_disable(); } }