diff --git a/src/database.rs b/src/database.rs index 74168c9..184ef55 100644 --- a/src/database.rs +++ b/src/database.rs @@ -6,17 +6,17 @@ use std::path::Path; use {Result, Statement}; /// A database. -pub struct Database<'l> { +pub struct Database { raw: *mut raw::sqlite3, - phantom: PhantomData<&'l raw::sqlite3>, + phantom: PhantomData, } /// A callback triggered for each row of an executed SQL query. pub type ExecuteCallback<'l> = FnMut(Vec<(String, String)>) -> bool + 'l; -impl<'l> Database<'l> { +impl Database { /// Open a database. - pub fn open(path: &Path) -> Result> { + pub fn open(path: &Path) -> Result { let mut raw = 0 as *mut _; unsafe { success!(raw::sqlite3_open(path_to_c_str!(path), &mut raw)); @@ -25,8 +25,8 @@ impl<'l> Database<'l> { } /// Execute an SQL statement. - pub fn execute<'c>(&mut self, sql: &str, - callback: Option<&mut ExecuteCallback<'c>>) -> Result<()> { + pub fn execute<'l>(&mut self, sql: &str, + callback: Option<&mut ExecuteCallback<'l>>) -> Result<()> { unsafe { match callback { @@ -49,12 +49,12 @@ impl<'l> Database<'l> { /// Create a prepared statement. #[inline] - pub fn statement(&mut self, sql: &str) -> Result> { + pub fn statement<'l>(&'l mut self, sql: &str) -> Result> { ::statement::new(self, sql) } } -impl<'l> Drop for Database<'l> { +impl Drop for Database { #[inline] fn drop(&mut self) { unsafe { raw::sqlite3_close(self.raw) }; diff --git a/src/lib.rs b/src/lib.rs index a34c6ab..28b838f 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -65,6 +65,6 @@ pub use statement::{Statement, Binding, Value}; /// Open a database. #[inline] -pub fn open<'l>(path: &std::path::Path) -> Result> { +pub fn open(path: &std::path::Path) -> Result { Database::open(path) } diff --git a/src/statement.rs b/src/statement.rs index 87f99df..f2b9b0f 100644 --- a/src/statement.rs +++ b/src/statement.rs @@ -7,7 +7,7 @@ use {Database, Result, ResultCode}; /// A prepared statement. pub struct Statement<'l> { raw: *mut raw::sqlite3_stmt, - phantom: PhantomData<&'l raw::sqlite3_stmt>, + phantom: PhantomData<(&'l raw::sqlite3, raw::sqlite3_stmt)>, } /// A binding of a prepared statement. @@ -101,7 +101,7 @@ impl Value for String { } #[inline] -pub fn new<'l>(database: &mut Database<'l>, sql: &str) -> Result> { +pub fn new<'l>(database: &'l mut Database, sql: &str) -> Result> { let mut raw = 0 as *mut _; unsafe { success!(database, raw::sqlite3_prepare(::database::as_raw(database), str_to_c_str!(sql),