pub trait ToSql: Debug {
    // Required methods
    fn to_sql(
        &self,
        ty: &Type,
        out: &mut BytesMut
    ) -> Result<IsNull, Box<dyn Error + Sync + Send, Global>>
       where Self: Sized;
    fn accepts(ty: &Type) -> bool
       where Self: Sized;
    fn to_sql_checked(
        &self,
        ty: &Type,
        out: &mut BytesMut
    ) -> Result<IsNull, Box<dyn Error + Sync + Send, Global>>;

    // Provided method
    fn encode_format(&self, _ty: &Type) -> Format { ... }
}
Expand description

A trait for types that can be converted into Postgres values.

Types

The following implementations are provided by this crate, along with the corresponding Postgres types:

Rust typePostgres type(s)
boolBOOL
i8“char”
i16SMALLINT, SMALLSERIAL
i32INT, SERIAL
u32OID
i64BIGINT, BIGSERIAL
f32REAL
f64DOUBLE PRECISION
&str/StringVARCHAR, CHAR(n), TEXT, CITEXT, NAME
LTREE, LQUERY, LTXTQUERY
&[u8]/Vec<u8>/[u8; N]BYTEA
HashMap<String, Option<String>>HSTORE
SystemTimeTIMESTAMP, TIMESTAMP WITH TIME ZONE
IpAddrINET

In addition, some implementations are provided for types in third party crates. These are disabled by default; to opt into one of these implementations, activate the Cargo feature corresponding to the crate’s name prefixed by with-. For example, the with-serde_json-1 feature enables the implementation for the serde_json::Value type.

Rust typePostgres type(s)
chrono::NaiveDateTimeTIMESTAMP
chrono::DateTime<Utc>TIMESTAMP WITH TIME ZONE
chrono::DateTime<Local>TIMESTAMP WITH TIME ZONE
chrono::DateTime<FixedOffset>TIMESTAMP WITH TIME ZONE
chrono::NaiveDateDATE
chrono::NaiveTimeTIME
time::PrimitiveDateTimeTIMESTAMP
time::OffsetDateTimeTIMESTAMP WITH TIME ZONE
time::DateDATE
time::TimeTIME
eui48::MacAddressMACADDR
geo_types::Point<f64>POINT
geo_types::Rect<f64>BOX
geo_types::LineString<f64>PATH
serde_json::ValueJSON, JSONB
uuid::UuidUUID
bit_vec::BitVecBIT, VARBIT
eui48::MacAddressMACADDR

Nullability

In addition to the types listed above, ToSql is implemented for Option<T> where T implements ToSql. An Option<T> represents a nullable Postgres value.

Arrays

ToSql is implemented for [u8; N], Vec<T>, &[T], Box<[T]> and [T; N] where T implements ToSql and N is const usize, and corresponds to one-dimensional Postgres arrays with an index offset of 1.

Note: the impl for arrays only exist when the Cargo feature array-impls is enabled.

Required Methods§

source

fn to_sql( &self, ty: &Type, out: &mut BytesMut ) -> Result<IsNull, Box<dyn Error + Sync + Send, Global>>where Self: Sized,

Converts the value of self into the binary format of the specified Postgres Type, appending it to out.

The caller of this method is responsible for ensuring that this type is compatible with the Postgres Type.

The return value indicates if this value should be represented as NULL. If this is the case, implementations must not write anything to out.

source

fn accepts(ty: &Type) -> boolwhere Self: Sized,

Determines if a value of this type can be converted to the specified Postgres Type.

source

fn to_sql_checked( &self, ty: &Type, out: &mut BytesMut ) -> Result<IsNull, Box<dyn Error + Sync + Send, Global>>

An adaptor method used internally by Rust-Postgres.

All implementations of this method should be generated by the to_sql_checked!() macro.

Provided Methods§

source

fn encode_format(&self, _ty: &Type) -> Format

Specify the encode format

Trait Implementations§

source§

impl BorrowToSql for &(dyn ToSql + Sync)

In async contexts it is sometimes necessary to have the additional Sync requirement on parameters for queries since this enables the resulting Futures to be Send, hence usable in, e.g., tokio::spawn. This instance is provided for those cases.

source§

fn borrow_to_sql(&self) -> &dyn ToSql

Returns a reference to self as a ToSql trait object.
source§

impl BorrowToSql for &dyn ToSql

source§

fn borrow_to_sql(&self) -> &dyn ToSql

Returns a reference to self as a ToSql trait object.
source§

impl BorrowToSql for Box<dyn ToSql + Sync + Send, Global>

source§

fn borrow_to_sql(&self) -> &dyn ToSql

Returns a reference to self as a ToSql trait object.
source§

impl BorrowToSql for Box<dyn ToSql + Sync, Global>

source§

fn borrow_to_sql(&self) -> &dyn ToSql

Returns a reference to self as a ToSql trait object.

Implementations on Foreign Types§

source§

impl<H> ToSql for HashMap<String, Option<String>, H>where H: BuildHasher,

source§

fn to_sql( &self, _: &Type, w: &mut BytesMut ) -> Result<IsNull, Box<dyn Error + Sync + Send, Global>>

source§

fn accepts(ty: &Type) -> bool

source§

fn to_sql_checked( &self, ty: &Type, out: &mut BytesMut ) -> Result<IsNull, Box<dyn Error + Sync + Send, Global>>

source§

impl ToSql for i64

source§

fn to_sql( &self, _: &Type, w: &mut BytesMut ) -> Result<IsNull, Box<dyn Error + Sync + Send, Global>>

source§

fn accepts(ty: &Type) -> bool

source§

fn to_sql_checked( &self, ty: &Type, out: &mut BytesMut ) -> Result<IsNull, Box<dyn Error + Sync + Send, Global>>

source§

impl ToSql for i32

source§

fn to_sql( &self, _: &Type, w: &mut BytesMut ) -> Result<IsNull, Box<dyn Error + Sync + Send, Global>>

source§

fn accepts(ty: &Type) -> bool

source§

fn to_sql_checked( &self, ty: &Type, out: &mut BytesMut ) -> Result<IsNull, Box<dyn Error + Sync + Send, Global>>

source§

impl<T> ToSql for Box<[T], Global>where T: ToSql,

source§

fn to_sql( &self, ty: &Type, w: &mut BytesMut ) -> Result<IsNull, Box<dyn Error + Sync + Send, Global>>

source§

fn accepts(ty: &Type) -> bool

source§

fn to_sql_checked( &self, ty: &Type, out: &mut BytesMut ) -> Result<IsNull, Box<dyn Error + Sync + Send, Global>>

source§

impl ToSql for u32

source§

fn to_sql( &self, _: &Type, w: &mut BytesMut ) -> Result<IsNull, Box<dyn Error + Sync + Send, Global>>

source§

fn accepts(ty: &Type) -> bool

source§

fn to_sql_checked( &self, ty: &Type, out: &mut BytesMut ) -> Result<IsNull, Box<dyn Error + Sync + Send, Global>>

source§

impl<'a> ToSql for Cow<'a, str>

source§

fn to_sql( &self, ty: &Type, w: &mut BytesMut ) -> Result<IsNull, Box<dyn Error + Sync + Send, Global>>

source§

fn accepts(ty: &Type) -> bool

source§

fn to_sql_checked( &self, ty: &Type, out: &mut BytesMut ) -> Result<IsNull, Box<dyn Error + Sync + Send, Global>>

source§

impl<'a, T> ToSql for &'a Twhere T: ToSql,

source§

fn to_sql( &self, ty: &Type, out: &mut BytesMut ) -> Result<IsNull, Box<dyn Error + Sync + Send, Global>>

source§

fn accepts(ty: &Type) -> bool

source§

fn encode_format(&self, ty: &Type) -> Format

source§

fn to_sql_checked( &self, ty: &Type, out: &mut BytesMut ) -> Result<IsNull, Box<dyn Error + Sync + Send, Global>>

source§

impl ToSql for String

source§

fn to_sql( &self, ty: &Type, w: &mut BytesMut ) -> Result<IsNull, Box<dyn Error + Sync + Send, Global>>

source§

fn accepts(ty: &Type) -> bool

source§

fn to_sql_checked( &self, ty: &Type, out: &mut BytesMut ) -> Result<IsNull, Box<dyn Error + Sync + Send, Global>>

source§

impl<'a> ToSql for &'a [u8]

source§

fn to_sql( &self, _: &Type, w: &mut BytesMut ) -> Result<IsNull, Box<dyn Error + Sync + Send, Global>>

source§

fn accepts(ty: &Type) -> bool

source§

fn to_sql_checked( &self, ty: &Type, out: &mut BytesMut ) -> Result<IsNull, Box<dyn Error + Sync + Send, Global>>

source§

impl ToSql for IpAddr

source§

fn to_sql( &self, _: &Type, w: &mut BytesMut ) -> Result<IsNull, Box<dyn Error + Sync + Send, Global>>

source§

fn accepts(ty: &Type) -> bool

source§

fn to_sql_checked( &self, ty: &Type, out: &mut BytesMut ) -> Result<IsNull, Box<dyn Error + Sync + Send, Global>>

source§

impl ToSql for f64

source§

fn to_sql( &self, _: &Type, w: &mut BytesMut ) -> Result<IsNull, Box<dyn Error + Sync + Send, Global>>

source§

fn accepts(ty: &Type) -> bool

source§

fn to_sql_checked( &self, ty: &Type, out: &mut BytesMut ) -> Result<IsNull, Box<dyn Error + Sync + Send, Global>>

source§

impl ToSql for bool

source§

fn to_sql( &self, _: &Type, w: &mut BytesMut ) -> Result<IsNull, Box<dyn Error + Sync + Send, Global>>

source§

fn accepts(ty: &Type) -> bool

source§

fn to_sql_checked( &self, ty: &Type, out: &mut BytesMut ) -> Result<IsNull, Box<dyn Error + Sync + Send, Global>>

source§

impl<T> ToSql for Option<T>where T: ToSql,

source§

fn to_sql( &self, ty: &Type, out: &mut BytesMut ) -> Result<IsNull, Box<dyn Error + Sync + Send, Global>>

source§

fn accepts(ty: &Type) -> bool

source§

fn encode_format(&self, ty: &Type) -> Format

source§

fn to_sql_checked( &self, ty: &Type, out: &mut BytesMut ) -> Result<IsNull, Box<dyn Error + Sync + Send, Global>>

source§

impl ToSql for f32

source§

fn to_sql( &self, _: &Type, w: &mut BytesMut ) -> Result<IsNull, Box<dyn Error + Sync + Send, Global>>

source§

fn accepts(ty: &Type) -> bool

source§

fn to_sql_checked( &self, ty: &Type, out: &mut BytesMut ) -> Result<IsNull, Box<dyn Error + Sync + Send, Global>>

source§

impl<'a> ToSql for &'a str

source§

fn to_sql( &self, ty: &Type, w: &mut BytesMut ) -> Result<IsNull, Box<dyn Error + Sync + Send, Global>>

source§

fn accepts(ty: &Type) -> bool

source§

fn to_sql_checked( &self, ty: &Type, out: &mut BytesMut ) -> Result<IsNull, Box<dyn Error + Sync + Send, Global>>

source§

impl ToSql for Box<str, Global>

source§

fn to_sql( &self, ty: &Type, w: &mut BytesMut ) -> Result<IsNull, Box<dyn Error + Sync + Send, Global>>

source§

fn accepts(ty: &Type) -> bool

source§

fn to_sql_checked( &self, ty: &Type, out: &mut BytesMut ) -> Result<IsNull, Box<dyn Error + Sync + Send, Global>>

source§

impl ToSql for i8

source§

fn to_sql( &self, _: &Type, w: &mut BytesMut ) -> Result<IsNull, Box<dyn Error + Sync + Send, Global>>

source§

fn accepts(ty: &Type) -> bool

source§

fn to_sql_checked( &self, ty: &Type, out: &mut BytesMut ) -> Result<IsNull, Box<dyn Error + Sync + Send, Global>>

source§

impl<T> ToSql for Vec<T, Global>where T: ToSql,

source§

fn to_sql( &self, ty: &Type, w: &mut BytesMut ) -> Result<IsNull, Box<dyn Error + Sync + Send, Global>>

source§

fn accepts(ty: &Type) -> bool

source§

fn to_sql_checked( &self, ty: &Type, out: &mut BytesMut ) -> Result<IsNull, Box<dyn Error + Sync + Send, Global>>

source§

impl ToSql for i16

source§

fn to_sql( &self, _: &Type, w: &mut BytesMut ) -> Result<IsNull, Box<dyn Error + Sync + Send, Global>>

source§

fn accepts(ty: &Type) -> bool

source§

fn to_sql_checked( &self, ty: &Type, out: &mut BytesMut ) -> Result<IsNull, Box<dyn Error + Sync + Send, Global>>

source§

impl<'a, T> ToSql for &'a [T]where T: ToSql,

source§

fn to_sql( &self, ty: &Type, w: &mut BytesMut ) -> Result<IsNull, Box<dyn Error + Sync + Send, Global>>

source§

fn accepts(ty: &Type) -> bool

source§

fn to_sql_checked( &self, ty: &Type, out: &mut BytesMut ) -> Result<IsNull, Box<dyn Error + Sync + Send, Global>>

source§

impl ToSql for SystemTime

source§

fn to_sql( &self, _: &Type, w: &mut BytesMut ) -> Result<IsNull, Box<dyn Error + Sync + Send, Global>>

source§

fn accepts(ty: &Type) -> bool

source§

fn to_sql_checked( &self, ty: &Type, out: &mut BytesMut ) -> Result<IsNull, Box<dyn Error + Sync + Send, Global>>

source§

impl ToSql for Vec<u8, Global>

source§

fn to_sql( &self, ty: &Type, w: &mut BytesMut ) -> Result<IsNull, Box<dyn Error + Sync + Send, Global>>

source§

fn accepts(ty: &Type) -> bool

source§

fn to_sql_checked( &self, ty: &Type, out: &mut BytesMut ) -> Result<IsNull, Box<dyn Error + Sync + Send, Global>>

Implementors§

source§

impl ToSql for PgLsn

source§

impl<T> ToSql for Date<T>where T: ToSql,

source§

impl<T> ToSql for Timestamp<T>where T: ToSql,