pub trait FromPostgresValue: Sized {
// Required methods
fn from_postgres_bool(value: bool) -> Result<Self, DrizzleError>;
fn from_postgres_i16(value: i16) -> Result<Self, DrizzleError>;
fn from_postgres_i32(value: i32) -> Result<Self, DrizzleError>;
fn from_postgres_i64(value: i64) -> Result<Self, DrizzleError>;
fn from_postgres_f32(value: f32) -> Result<Self, DrizzleError>;
fn from_postgres_f64(value: f64) -> Result<Self, DrizzleError>;
fn from_postgres_text(value: &str) -> Result<Self, DrizzleError>;
fn from_postgres_bytes(value: &[u8]) -> Result<Self, DrizzleError>;
// Provided methods
fn from_postgres_null() -> Result<Self, DrizzleError> { ... }
fn from_postgres_array(
_value: Vec<PostgresValue<'_>>,
) -> Result<Self, DrizzleError> { ... }
}Expand description
Trait for types that can be converted from PostgreSQL values.
PostgreSQL has many types, but this trait focuses on the core conversions:
- Integers (i16, i32, i64)
- Floats (f32, f64)
- Text (String, &str)
- Binary (Vec
, &u8) - Boolean
- NULL handling
§Implementation Notes
- Implement the methods that make sense for your type
- Return
Errfor unsupported conversions PostgresEnumderive automatically implements this trait
Required Methods§
Sourcefn from_postgres_bool(value: bool) -> Result<Self, DrizzleError>
fn from_postgres_bool(value: bool) -> Result<Self, DrizzleError>
Convert from a boolean value
§Errors
Returns DrizzleError::ConversionError if the value cannot be represented as the target type.
Sourcefn from_postgres_i16(value: i16) -> Result<Self, DrizzleError>
fn from_postgres_i16(value: i16) -> Result<Self, DrizzleError>
Convert from a 16-bit integer value
§Errors
Returns DrizzleError::ConversionError if the value cannot be represented as the target type.
Sourcefn from_postgres_i32(value: i32) -> Result<Self, DrizzleError>
fn from_postgres_i32(value: i32) -> Result<Self, DrizzleError>
Convert from a 32-bit integer value
§Errors
Returns DrizzleError::ConversionError if the value cannot be represented as the target type.
Sourcefn from_postgres_i64(value: i64) -> Result<Self, DrizzleError>
fn from_postgres_i64(value: i64) -> Result<Self, DrizzleError>
Convert from a 64-bit integer value
§Errors
Returns DrizzleError::ConversionError if the value cannot be represented as the target type.
Sourcefn from_postgres_f32(value: f32) -> Result<Self, DrizzleError>
fn from_postgres_f32(value: f32) -> Result<Self, DrizzleError>
Convert from a 32-bit float value
§Errors
Returns DrizzleError::ConversionError if the value cannot be represented as the target type.
Sourcefn from_postgres_f64(value: f64) -> Result<Self, DrizzleError>
fn from_postgres_f64(value: f64) -> Result<Self, DrizzleError>
Convert from a 64-bit float value
§Errors
Returns DrizzleError::ConversionError if the value cannot be represented as the target type.
Sourcefn from_postgres_text(value: &str) -> Result<Self, DrizzleError>
fn from_postgres_text(value: &str) -> Result<Self, DrizzleError>
Convert from a text/string value
§Errors
Returns DrizzleError::ConversionError if the value cannot be represented as the target type.
Sourcefn from_postgres_bytes(value: &[u8]) -> Result<Self, DrizzleError>
fn from_postgres_bytes(value: &[u8]) -> Result<Self, DrizzleError>
Convert from a binary/bytea value
§Errors
Returns DrizzleError::ConversionError if the value cannot be represented as the target type.
Provided Methods§
Sourcefn from_postgres_null() -> Result<Self, DrizzleError>
fn from_postgres_null() -> Result<Self, DrizzleError>
Convert from a NULL value (default returns error)
§Errors
Returns DrizzleError::ConversionError unless the implementor treats NULL as a valid value.
Sourcefn from_postgres_array(
_value: Vec<PostgresValue<'_>>,
) -> Result<Self, DrizzleError>
fn from_postgres_array( _value: Vec<PostgresValue<'_>>, ) -> Result<Self, DrizzleError>
Convert from an ARRAY value
§Errors
Returns DrizzleError::ConversionError if the target type cannot represent an ARRAY value.
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.