Don't implement Into<RawStatement> for Statement

This commit is contained in:
Thom Chiovoloni 2020-06-06 17:27:14 -07:00 committed by Thom Chiovoloni
parent 6b4f207dc1
commit f7a573e44a
2 changed files with 6 additions and 5 deletions

View File

@ -84,7 +84,7 @@ impl Drop for CachedStatement<'_> {
#[allow(unused_must_use)] #[allow(unused_must_use)]
fn drop(&mut self) { fn drop(&mut self) {
if let Some(stmt) = self.stmt.take() { if let Some(stmt) = self.stmt.take() {
self.cache.cache_stmt(stmt.into()); self.cache.cache_stmt(unsafe { stmt.into_raw() });
} }
} }
} }

View File

@ -702,11 +702,12 @@ impl Statement<'_> {
pub(crate) fn check_no_tail(&self) -> Result<()> { pub(crate) fn check_no_tail(&self) -> Result<()> {
Ok(()) Ok(())
} }
}
impl Into<RawStatement> for Statement<'_> { /// Safety: This is unsafe, because using `sqlite3_stmt` after the
fn into(mut self) -> RawStatement { /// connection has closed is illegal, but `RawStatement` does not enforce
let mut stmt = unsafe { RawStatement::new(ptr::null_mut(), false) }; /// this, as it loses our protective `'conn` lifetime bound.
pub(crate) unsafe fn into_raw(mut self) -> RawStatement {
let mut stmt = RawStatement::new(ptr::null_mut(), false);
mem::swap(&mut stmt, &mut self.stmt); mem::swap(&mut stmt, &mut self.stmt);
stmt stmt
} }