typed_sql/
sql.rs

1pub trait CheckedSql {}
2
3impl CheckedSql for i8 {}
4
5impl CheckedSql for i16 {}
6
7impl CheckedSql for i32 {}
8
9impl CheckedSql for i64 {}
10
11impl CheckedSql for u8 {}
12
13impl CheckedSql for u16 {}
14
15impl CheckedSql for u32 {}
16
17impl CheckedSql for u64 {}
18
19pub trait ToSql {
20    fn write_sql_unchecked(&self, sql: &mut String);
21
22    fn write_sql(&self, sql: &mut String)
23    where
24        Self: CheckedSql,
25    {
26        self.write_sql_unchecked(sql);
27    }
28
29    fn to_sql_unchecked(&self) -> String {
30        let mut sql = String::new();
31        self.write_sql_unchecked(&mut sql);
32        sql.push(';');
33        sql
34    }
35
36    fn to_sql(&self) -> String
37    where
38        Self: CheckedSql,
39    {
40        self.to_sql_unchecked()
41    }
42}