pub trait FromSpanner<'a>: Sized {
// Required method
fn from_spanner(value: &'a Value) -> Result<Self, Error>;
// Provided methods
fn from_spanner_null(tpe: &Type) -> Result<Self, Error> { ... }
fn from_spanner_nullable(value: &'a Value) -> Result<Self, Error> { ... }
}Expand description
A trait for Rust types that can be converted from Cloud Spanner values.
§Types
The crate provides the following mapping between Cloud Spanner types and Rust types.
| Rust Type | Spanner Type |
|---|---|
bool | BOOL |
u8, i8, u16, i16, u32, i32, i64 | INT64 |
f64 | FLOAT64 |
&str, String | STRING |
&[u8], Bytes | BYTES |
The following are provided when the corresponding feature is enabled:
| Feature | Rust Type | Spanner Type |
|---|---|---|
json | serde_json::Value | JSON |
numeric | bigdecimal::BigDecimal | NUMERIC |
temporal | chrono::DateTime<Utc> | TIMESTAMP |
temporal | chrono::NaiveDate | DATE |
§Nullability
FromSpanner is implemented for Option<T> when T implements FromSpanner.
Option<T> represents a nullable Spanner value.
§Arrays
FromSpanner is implemented for Vec<T> when T implements FromSpanner.
Such values map to Spanner’s Array type.
Arrays may contain null values (i.e.: Vec<Option<T>>). Note that Vec<Vec<T>> is not allowed.
Required Methods§
Sourcefn from_spanner(value: &'a Value) -> Result<Self, Error>
fn from_spanner(value: &'a Value) -> Result<Self, Error>
Creates a new value of this type from the provided Cloud Spanner value.
Values passed to this method should not be Value::Null, if this is not known to be the case, use FromSpanner::from_spanner_nullable instead.
Provided Methods§
Sourcefn from_spanner_null(tpe: &Type) -> Result<Self, Error>
fn from_spanner_null(tpe: &Type) -> Result<Self, Error>
Creates a new value of this type from the provided Cloud Spanner NULL value’s type.
Sourcefn from_spanner_nullable(value: &'a Value) -> Result<Self, Error>
fn from_spanner_nullable(value: &'a Value) -> Result<Self, Error>
Creates a new value of this type from the provided Cloud Spanner value which may or may not be null.
This method will dispatch to either FromSpanner::from_spanner or FromSpanner::from_spanner_null depending
on whether the provided value is NULL.
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.