Expand description
Conversions to and from Postgres types.
This crate is used by the tokio-postgres and postgres crates. You normally don’t need to depend directly on it
unless you want to define your own ToSql or FromSql definitions.
§Derive
If the derive cargo feature is enabled, you can derive ToSql and FromSql implementations for custom Postgres
types. Explicitly, modify your Cargo.toml file to include the following:
[dependencies]
opengauss-types = { version = "0.X.X", features = ["derive"] }§Enums
Postgres enums correspond to C-like enums in Rust:
CREATE TYPE "Mood" AS ENUM (
'Sad',
'Ok',
'Happy'
);use opengauss_types::{ToSql, FromSql};
#[derive(Debug, ToSql, FromSql)]
enum Mood {
Sad,
Ok,
Happy,
}§Domains
Postgres domains correspond to tuple structs with one member in Rust:
CREATE DOMAIN "SessionId" AS BYTEA CHECK(octet_length(VALUE) = 16);use opengauss_types::{ToSql, FromSql};
#[derive(Debug, ToSql, FromSql)]
struct SessionId(Vec<u8>);§Composites
Postgres composite types correspond to structs in Rust:
CREATE TYPE "InventoryItem" AS (
name TEXT,
supplier_id INT,
price DOUBLE PRECISION
);use opengauss_types::{ToSql, FromSql};
#[derive(Debug, ToSql, FromSql)]
struct InventoryItem {
name: String,
supplier_id: i32,
price: Option<f64>,
}§Naming
The derived implementations will enforce exact matches of type, field, and variant names between the Rust and
Postgres types. The #[postgres(name = "...")] attribute can be used to adjust the name on a type, variant, or
field:
CREATE TYPE mood AS ENUM (
'sad',
'ok',
'happy'
);use opengauss_types::{ToSql, FromSql};
#[derive(Debug, ToSql, FromSql)]
#[postgres(name = "mood")]
enum Mood {
#[postgres(name = "sad")]
Sad,
#[postgres(name = "ok")]
Ok,
#[postgres(name = "happy")]
Happy,
}Macros§
- accepts
- Generates a simple implementation of
ToSql::acceptswhich accepts the types passed to it. - to_
sql_ checked - Generates an implementation of
ToSql::to_sql_checked.
Structs§
- Field
- Information about a field of a composite type.
- PgLsn
- Postgres
PG_LSNtype. - Type
- A Postgres type.
- WasNull
- An error indicating that a
NULLPostgres value was passed to aFromSqlimplementation that does not supportNULLvalues. - Wrong
Type - An error indicating that a conversion was attempted between incompatible Rust and Postgres types.
Enums§
- Date
- A wrapper that can be used to represent infinity with
Type::Datetypes. - IsNull
- An enum representing the nullability of a Postgres value.
- Kind
- Represents the kind of a Postgres type.
- Timestamp
- A wrapper that can be used to represent infinity with
Type::TimestampandType::Timestamptztypes.
Traits§
- Borrow
ToSql - A trait used by clients to abstract over
&dyn ToSqlandT: ToSql. - FromSql
- A trait for types that can be created from a Postgres value.
- From
SqlOwned - A trait for types which can be created from a Postgres value without borrowing any data.
- ToSql
- A trait for types that can be converted into Postgres values.
Type Aliases§
- Oid
- A Postgres OID.