zero_postgres/
statement.rs1use crate::state::extended::PreparedStatement;
4
5pub enum StatementRef<'a> {
11 Sql(&'a str),
12 Prepared(&'a PreparedStatement),
13}
14
15pub trait IntoStatement: private::Sealed {
19 fn statement_ref(&self) -> StatementRef<'_>;
21}
22
23mod private {
24 use crate::state::extended::PreparedStatement;
25
26 pub trait Sealed {}
27
28 impl Sealed for PreparedStatement {}
29 impl Sealed for &PreparedStatement {}
30 impl Sealed for str {}
31 impl Sealed for &str {}
32 impl Sealed for &&str {}
33}
34
35impl IntoStatement for &PreparedStatement {
36 fn statement_ref(&self) -> StatementRef<'_> {
37 StatementRef::Prepared(self)
38 }
39}
40
41impl IntoStatement for &str {
42 fn statement_ref(&self) -> StatementRef<'_> {
43 StatementRef::Sql(self)
44 }
45}
46
47impl IntoStatement for &&str {
48 fn statement_ref(&self) -> StatementRef<'_> {
49 StatementRef::Sql(self)
50 }
51}
52
53impl IntoStatement for str {
54 fn statement_ref(&self) -> StatementRef<'_> {
55 StatementRef::Sql(self)
56 }
57}
58
59impl IntoStatement for PreparedStatement {
60 fn statement_ref(&self) -> StatementRef<'_> {
61 StatementRef::Prepared(self)
62 }
63}