From 9257987b375bb07a9673bf8fba664d54ae0f3ab8 Mon Sep 17 00:00:00 2001 From: Gwenael Treguier Date: Wed, 16 Dec 2015 19:42:03 +0100 Subject: [PATCH] Try to introduce a CachedStatement struct. --- src/cache.rs | 20 +++++++++++++++++++- 1 file changed, 19 insertions(+), 1 deletion(-) diff --git a/src/cache.rs b/src/cache.rs index 4f7087c..38a5e38 100644 --- a/src/cache.rs +++ b/src/cache.rs @@ -9,10 +9,28 @@ use self::lru_cache::LruCache; /// FIXME limitation: the same SQL can be cached only once... #[derive(Debug)] pub struct StatementCache<'conn> { - pub conn: &'conn Connection, + conn: &'conn Connection, cache: LruCache>, } +pub struct CachedStatement<'conn> { + stmt: Statement<'conn>, + cache: &'conn StatementCache<'conn>, + pub cacheable : bool, +} + +impl<'conn> Drop for CachedStatement<'conn> { + #[allow(unused_must_use)] + fn drop(&mut self) { + if self.cacheable { + // FIXME cannot borrow immutable borrowed content `*self.cache` as mutable + //self.cache.release(self.stmt, false); + } else { + self.stmt.finalize_(); + } + } +} + impl<'conn> StatementCache<'conn> { /// Create a statement cache. pub fn new(conn: &'conn Connection, capacity: usize) -> StatementCache<'conn> {