pub trait Backend where
Self: Sized,
Self: HasSqlType<SmallInt>,
Self: HasSqlType<Integer>,
Self: HasSqlType<BigInt>,
Self: HasSqlType<Float>,
Self: HasSqlType<Double>,
Self: HasSqlType<VarChar>,
Self: HasSqlType<Text>,
Self: HasSqlType<Binary>,
Self: HasSqlType<Date>,
Self: HasSqlType<Time>,
Self: HasSqlType<Timestamp>, {
type QueryBuilder: QueryBuilder<Self>;
type BindCollector: BindCollector<Self>;
type RawValue: ?Sized;
type ByteOrder: ByteOrder;
}
Expand description
A database backend
This trait represents the concept of a backend (e.g. “MySQL” vs “SQLite”).
It is separate from a Connection
to that backend.
One backend may have multiple concrete connection implementations.
Implementations of this trait should not assume details about how the
connection is implemented.
For example, the Pg
backend does not assume that libpq
is being used.
Implementations of this trait can and should care about details of the wire
protocol used to communicated with the database.
Associated Types
type QueryBuilder: QueryBuilder<Self>
type QueryBuilder: QueryBuilder<Self>
The concrete QueryBuilder
implementation for this backend.
type BindCollector: BindCollector<Self>
type BindCollector: BindCollector<Self>
The concrete BindCollector
implementation for this backend.
Most backends should use RawBytesBindCollector
.
The raw representation of a database value given to FromSql
.
Since most backends transmit data as opaque blobs of bytes, this type
is usually [u8]
.