pub trait FromSql<'a>: Sized {
// Required methods
fn from_sql(
ty: &Type,
raw: &'a [u8],
) -> Result<Self, Box<dyn Error + Sync + Send>>;
fn accepts(ty: &Type) -> bool;
// Provided methods
fn from_sql_null(ty: &Type) -> Result<Self, Box<dyn Error + Sync + Send>> { ... }
fn from_sql_nullable(
ty: &Type,
raw: Option<&'a [u8]>,
) -> Result<Self, Box<dyn Error + Sync + Send>> { ... }
}Expand description
A trait for types that can be created from a Postgres value.
§Types
The following implementations are provided by this crate, along with the corresponding Postgres types:
| Rust type | Postgres type(s) |
|---|---|
bool | BOOL |
i8 | “char” |
i16 | SMALLINT, SMALLSERIAL |
i32 | INT, SERIAL |
u32 | OID |
i64 | BIGINT, BIGSERIAL |
f32 | REAL |
f64 | DOUBLE PRECISION |
&str/String | VARCHAR, CHAR(n), TEXT, CITEXT, NAME, UNKNOWN |
| LTREE, LQUERY, LTXTQUERY | |
&[u8]/Vec<u8> | BYTEA |
HashMap<String, Option<String>> | HSTORE |
SystemTime | TIMESTAMP, TIMESTAMP WITH TIME ZONE |
IpAddr | INET |
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 type | Postgres type(s) |
|---|---|
chrono::NaiveDateTime | TIMESTAMP |
chrono::DateTime<Utc> | TIMESTAMP WITH TIME ZONE |
chrono::DateTime<Local> | TIMESTAMP WITH TIME ZONE |
chrono::DateTime<FixedOffset> | TIMESTAMP WITH TIME ZONE |
chrono::NaiveDate | DATE |
chrono::NaiveTime | TIME |
time::PrimitiveDateTime | TIMESTAMP |
time::OffsetDateTime | TIMESTAMP WITH TIME ZONE |
time::Date | DATE |
time::Time | TIME |
eui48::MacAddress | MACADDR |
geo_types::Point<f64> | POINT |
geo_types::Rect<f64> | BOX |
geo_types::LineString<f64> | PATH |
serde_json::Value | JSON, JSONB |
uuid::Uuid | UUID |
bit_vec::BitVec | BIT, VARBIT |
eui48::MacAddress | MACADDR |
cidr::InetCidr | CIDR |
cidr::InetAddr | INET |
smol_str::SmolStr | VARCHAR, CHAR(n), TEXT, CITEXT, |
| NAME, UNKNOWN, LTREE, LQUERY, | |
| LTXTQUERY |
§Nullability
In addition to the types listed above, FromSql is implemented for
Option<T> where T implements FromSql. An Option<T> represents a
nullable Postgres value.
§Arrays
FromSql is implemented for Vec<T>, Box<[T]> and [T; N] where T
implements FromSql, and corresponds to one-dimensional Postgres arrays.
Note: the impl for arrays only exist when the Cargo feature array-impls
is enabled.
Required Methods§
Sourcefn from_sql(
ty: &Type,
raw: &'a [u8],
) -> Result<Self, Box<dyn Error + Sync + Send>>
fn from_sql( ty: &Type, raw: &'a [u8], ) -> Result<Self, Box<dyn Error + Sync + Send>>
Creates a new value of this type from a buffer of data of the specified
Postgres Type in its binary format.
The caller of this method is responsible for ensuring that this type
is compatible with the Postgres Type.
Provided Methods§
Sourcefn from_sql_null(ty: &Type) -> Result<Self, Box<dyn Error + Sync + Send>>
fn from_sql_null(ty: &Type) -> Result<Self, Box<dyn Error + Sync + Send>>
Creates a new value of this type from a NULL SQL value.
The caller of this method is responsible for ensuring that this type
is compatible with the Postgres Type.
The default implementation returns Err(Box::new(WasNull)).
Dyn Compatibility§
This trait is not dyn compatible.
In older versions of Rust, dyn compatibility was called "object safety", so this trait is not object safe.