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)]
fn drop(&mut self) {
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<()> {
Ok(())
}
}
impl Into<RawStatement> for Statement<'_> {
fn into(mut self) -> RawStatement {
let mut stmt = unsafe { RawStatement::new(ptr::null_mut(), false) };
/// Safety: This is unsafe, because using `sqlite3_stmt` after the
/// connection has closed is illegal, but `RawStatement` does not enforce
/// 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);
stmt
}