use std::sync::Arc; use crate::Engine; pub struct Cork { db: Arc, flush: bool, sync: bool, } impl Cork { #[inline] pub(super) fn new(db: &Arc, flush: bool, sync: bool) -> Self { db.cork(); Self { db: db.clone(), flush, sync, } } } impl Drop for Cork { fn drop(&mut self) { self.db.uncork(); if self.flush { self.db.flush().ok(); } if self.sync { self.db.sync().ok(); } } }