pub enum GenericValue {
Show 17 variants
Null,
Bool(bool),
SmallInt(i16),
Int(i32),
BigInt(i64),
Float(f32),
Double(f64),
Decimal(Decimal),
String(String),
Uuid(Uuid),
Date(NaiveDate),
Time(NaiveTime),
Timestamp(NaiveDateTime),
TimestampTz(DateTime<Utc>),
Bytes(Vec<u8>),
Array(Vec<GenericValue>),
Map(BTreeMap<String, GenericValue>),
}Expand description
The canonical value vocabulary every layer trades in — the middle type between a source and a sink.
A source maps its native types into these variants; a sink maps them out
to its own representation. The set is deliberately fine-grained — numerics are
split by width, temporals are split into date/time/timestamp/timestamptz — so
no semantic information is lost in transit: a date arrives at a sink as a
Date, not an opaque string a future sink would have to guess
at. Text-family Postgres types (text/varchar/citext/enum) share the one
String shape because they don’t differ as values; their
indexing differs, and that lives in the field’s FlussoType.
Serde is derived and format-agnostic on purpose. The derive is externally
tagged ({"Date":"2024-01-01"}, {"BigInt":5}), so serialize → deserialize
is a lossless identity — a Date round-trips back a Date, never collapsing
to a string. That lets a queue persist or transport a value in whatever format
it likes and hand it back unchanged: it goes in as a GenericValue and comes
out as the same GenericValue. Core picks no format (no JSON here); the
concrete encoding is the consumer’s choice.
Variants§
Null
Bool(bool)
SmallInt(i16)
smallint / int2.
Int(i32)
integer / int4.
BigInt(i64)
bigint / int8.
Float(f32)
real / float4.
Double(f64)
double precision / float8.
Decimal(Decimal)
numeric / decimal — exact.
String(String)
Any text-family value (text/varchar/citext/enum).
Uuid(Uuid)
uuid.
Date(NaiveDate)
date — no time, no zone.
Time(NaiveTime)
time — no date, no zone.
Timestamp(NaiveDateTime)
timestamp — date + time, no zone.
TimestampTz(DateTime<Utc>)
timestamptz — an instant, normalized to UTC.
Bytes(Vec<u8>)
bytea.
Array(Vec<GenericValue>)
Map(BTreeMap<String, GenericValue>)
Implementations§
Source§impl GenericValue
impl GenericValue
Sourcepub fn is_bindable_scalar(&self) -> bool
pub fn is_bindable_scalar(&self) -> bool
Whether this value can stand as a single SQL parameter, key, or literal:
true for every scalar variant, false for Null and the composite
Array/Map. The one home for that rule — the Postgres source applies
it when binding params, building keys, and inlining literals. Written as
an exhaustive match so a new variant cannot be added without classifying
it here.
Trait Implementations§
Source§impl Clone for GenericValue
impl Clone for GenericValue
Source§fn clone(&self) -> GenericValue
fn clone(&self) -> GenericValue
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreSource§impl Debug for GenericValue
impl Debug for GenericValue
Source§impl<'de> Deserialize<'de> for GenericValue
impl<'de> Deserialize<'de> for GenericValue
Source§fn deserialize<__D>(
__deserializer: __D,
) -> Result<GenericValue, <__D as Deserializer<'de>>::Error>where
__D: Deserializer<'de>,
fn deserialize<__D>(
__deserializer: __D,
) -> Result<GenericValue, <__D as Deserializer<'de>>::Error>where
__D: Deserializer<'de>,
impl Eq for GenericValue
Source§impl Hash for GenericValue
impl Hash for GenericValue
Source§impl PartialEq for GenericValue
impl PartialEq for GenericValue
Source§fn eq(&self, other: &GenericValue) -> bool
fn eq(&self, other: &GenericValue) -> bool
self and other values to be equal, and is used by ==.Source§impl Serialize for GenericValue
impl Serialize for GenericValue
Source§fn serialize<__S>(
&self,
__serializer: __S,
) -> Result<<__S as Serializer>::Ok, <__S as Serializer>::Error>where
__S: Serializer,
fn serialize<__S>(
&self,
__serializer: __S,
) -> Result<<__S as Serializer>::Ok, <__S as Serializer>::Error>where
__S: Serializer,
Auto Trait Implementations§
impl Freeze for GenericValue
impl RefUnwindSafe for GenericValue
impl Send for GenericValue
impl Sync for GenericValue
impl Unpin for GenericValue
impl UnsafeUnpin for GenericValue
impl UnwindSafe for GenericValue
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> DeserializeOwned for Twhere
T: for<'de> Deserialize<'de>,
Source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
Source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
Source§fn equivalent(&self, key: &K) -> bool
fn equivalent(&self, key: &K) -> bool
key and return true if they are equal.