1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58
use byteorder::{ByteOrder, NativeEndian}; use query_builder::{QueryBuilder, BindCollector}; use query_builder::debug::DebugQueryBuilder; use types::{self, HasSqlType}; pub trait Backend where Self: Sized, Self: HasSqlType<types::SmallInt>, Self: HasSqlType<types::Integer>, Self: HasSqlType<types::BigInt>, Self: HasSqlType<types::Float>, Self: HasSqlType<types::Double>, Self: HasSqlType<types::VarChar>, Self: HasSqlType<types::Text>, Self: HasSqlType<types::Binary>, Self: HasSqlType<types::Date>, Self: HasSqlType<types::Time>, Self: HasSqlType<types::Timestamp>, { type QueryBuilder: QueryBuilder<Self>; type BindCollector: BindCollector<Self>; type RawValue: ?Sized; type ByteOrder: ByteOrder; } pub trait TypeMetadata { type TypeMetadata; } pub trait SupportsReturningClause {} pub trait SupportsDefaultKeyword {} pub trait UsesAnsiSavepointSyntax {} #[derive(Debug, Copy, Clone)] pub struct Debug; impl Backend for Debug { type QueryBuilder = DebugQueryBuilder; type BindCollector = (); type RawValue = (); type ByteOrder = NativeEndian; } impl BindCollector<Debug> for () { fn push_bound_value<T>(&mut self, _binds: Option<Vec<u8>>) where Debug: HasSqlType<T>, { } } impl TypeMetadata for Debug { type TypeMetadata = (); } impl SupportsReturningClause for Debug {} impl SupportsDefaultKeyword for Debug {} impl UsesAnsiSavepointSyntax for Debug {}