use crate::state::extended::PreparedStatement;
pub enum StatementRef<'a> {
Sql(&'a str),
Prepared(&'a PreparedStatement),
}
pub trait IntoStatement: private::Sealed {
fn statement_ref(&self) -> StatementRef<'_>;
}
mod private {
use crate::state::extended::PreparedStatement;
pub trait Sealed {}
impl Sealed for PreparedStatement {}
impl Sealed for &PreparedStatement {}
impl Sealed for str {}
impl Sealed for &str {}
impl Sealed for &&str {}
}
impl IntoStatement for &PreparedStatement {
fn statement_ref(&self) -> StatementRef<'_> {
StatementRef::Prepared(self)
}
}
impl IntoStatement for &str {
fn statement_ref(&self) -> StatementRef<'_> {
StatementRef::Sql(self)
}
}
impl IntoStatement for &&str {
fn statement_ref(&self) -> StatementRef<'_> {
StatementRef::Sql(self)
}
}
impl IntoStatement for str {
fn statement_ref(&self) -> StatementRef<'_> {
StatementRef::Sql(self)
}
}
impl IntoStatement for PreparedStatement {
fn statement_ref(&self) -> StatementRef<'_> {
StatementRef::Prepared(self)
}
}