#[non_exhaustive]pub enum JsonbSqlCast {
Int2,
Int4,
Int8,
Float4,
Float8,
Boolean,
Timestamptz,
Date,
Uuid,
Numeric,
Interval,
}Expand description
Closed taxonomy of Postgres casts a JSONB path LHS can wear.
Jsonb<T> path extraction ((col->...->>'key')) always yields TEXT.
To compare against a numeric, temporal, UUID, decimal, interval, or
network bind value, the LHS must be cast to the matching Postgres type
before the comparison runs — otherwise Postgres compares as text and
'10' < '9' because text ordering is lexicographic, not numeric.
This enum is the typed public API surface for that cast metadata.
Adopter-supplied wrapper types delegate JSONB cast selection through
the value-typed IntoFilterValue::jsonb_sql_cast trait method,
which returns a variant of this enum — never a free-form SQL string.
That keeps every cast that ever reaches the SQL emitter constrained
to the closed set below.
§Variants
Int2:::int2—i8/i16/u8widening.Int4:::int4—i32/u16widening.Int8:::int8—i64/u32widening / HeerId family.Float4:::float4—f32.Float8:::float8—f64.Boolean:::boolean.Timestamptz:::timestamptz—time::OffsetDateTime.Date:::date—time::Date.Uuid:::uuid—uuid::Uuid/ RanjId family.Numeric:::numeric—rust_decimal::Decimal,u64.Interval:::interval—djogi::Interval.Inet:::inet—std::net::IpAddr(networkfeature only).Cidr:::cidr—djogi::CidrAddr(networkfeature only).Macaddr:::macaddr—djogi::MacAddr(networkfeature only). The enum is#[non_exhaustive]so future Postgres-cast surface (e.g.::bytea,::tstzrange, …) can be added without a SemVer break on downstream matches.
Variants (Non-exhaustive)§
This enum is marked as non-exhaustive
Int2
::int2 (Postgres SMALLINT, 16-bit signed).
Int4
::int4 (Postgres INTEGER, 32-bit signed).
Int8
::int8 (Postgres BIGINT, 64-bit signed).
Float4
::float4 (Postgres REAL, 32-bit IEEE 754).
Float8
::float8 (Postgres DOUBLE PRECISION, 64-bit IEEE 754).
Boolean
::boolean.
Timestamptz
::timestamptz (Postgres TIMESTAMP WITH TIME ZONE).
Date
::date.
Uuid
::uuid.
Numeric
::numeric (Postgres exact-precision decimal).
Interval
::interval.
Trait Implementations§
Source§impl Clone for JsonbSqlCast
impl Clone for JsonbSqlCast
Source§fn clone(&self) -> JsonbSqlCast
fn clone(&self) -> JsonbSqlCast
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreimpl Copy for JsonbSqlCast
Source§impl Debug for JsonbSqlCast
impl Debug for JsonbSqlCast
impl Eq for JsonbSqlCast
Source§impl Hash for JsonbSqlCast
impl Hash for JsonbSqlCast
Source§impl PartialEq for JsonbSqlCast
impl PartialEq for JsonbSqlCast
Source§fn eq(&self, other: &JsonbSqlCast) -> bool
fn eq(&self, other: &JsonbSqlCast) -> bool
self and other values to be equal, and is used by ==.impl StructuralPartialEq for JsonbSqlCast
Auto Trait Implementations§
impl Freeze for JsonbSqlCast
impl RefUnwindSafe for JsonbSqlCast
impl Send for JsonbSqlCast
impl Sync for JsonbSqlCast
impl Unpin for JsonbSqlCast
impl UnsafeUnpin for JsonbSqlCast
impl UnwindSafe for JsonbSqlCast
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,
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.Source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
Source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<V> IntoPortableFieldValue<Option<V>> for V
impl<V> IntoPortableFieldValue<Option<V>> for V
Source§fn into_portable_field_value(self) -> Option<V>
fn into_portable_field_value(self) -> Option<V>
self into the field’s declared portable value type.
The returned value flows into Sassi’s Field<M, FieldValue>::eq /
.gt / .in_ / etc. as the right-hand-side operand. Implementors
must produce a value whose PartialEq / PartialOrd / Hash
behaviour matches the on-disk column ordering — otherwise Punnu and
the database row will disagree at evaluation time.Source§impl<V> IntoPortableFieldValue<Tracked<V>> for V
impl<V> IntoPortableFieldValue<Tracked<V>> for V
Source§fn into_portable_field_value(self) -> Tracked<V>
fn into_portable_field_value(self) -> Tracked<V>
self into the field’s declared portable value type.
The returned value flows into Sassi’s Field<M, FieldValue>::eq /
.gt / .in_ / etc. as the right-hand-side operand. Implementors
must produce a value whose PartialEq / PartialOrd / Hash
behaviour matches the on-disk column ordering — otherwise Punnu and
the database row will disagree at evaluation time.Source§impl<V> IntoPortableFieldValue<V> for V
impl<V> IntoPortableFieldValue<V> for V
Source§fn into_portable_field_value(self) -> V
fn into_portable_field_value(self) -> V
self into the field’s declared portable value type.
The returned value flows into Sassi’s Field<M, FieldValue>::eq /
.gt / .in_ / etc. as the right-hand-side operand. Implementors
must produce a value whose PartialEq / PartialOrd / Hash
behaviour matches the on-disk column ordering — otherwise Punnu and
the database row will disagree at evaluation time.Source§impl<T> Paint for Twhere
T: ?Sized,
impl<T> Paint for Twhere
T: ?Sized,
Source§fn fg(&self, value: Color) -> Painted<&T>
fn fg(&self, value: Color) -> Painted<&T>
Returns a styled value derived from self with the foreground set to
value.
This method should be used rarely. Instead, prefer to use color-specific
builder methods like red() and
green(), which have the same functionality but are
pithier.
§Example
Set foreground color to white using fg():
use yansi::{Paint, Color};
painted.fg(Color::White);Set foreground color to white using white().
use yansi::Paint;
painted.white();Source§fn bright_black(&self) -> Painted<&T>
fn bright_black(&self) -> Painted<&T>
Source§fn bright_red(&self) -> Painted<&T>
fn bright_red(&self) -> Painted<&T>
Source§fn bright_green(&self) -> Painted<&T>
fn bright_green(&self) -> Painted<&T>
Source§fn bright_yellow(&self) -> Painted<&T>
fn bright_yellow(&self) -> Painted<&T>
Source§fn bright_blue(&self) -> Painted<&T>
fn bright_blue(&self) -> Painted<&T>
Source§fn bright_magenta(&self) -> Painted<&T>
fn bright_magenta(&self) -> Painted<&T>
Source§fn bright_cyan(&self) -> Painted<&T>
fn bright_cyan(&self) -> Painted<&T>
Source§fn bright_white(&self) -> Painted<&T>
fn bright_white(&self) -> Painted<&T>
Source§fn bg(&self, value: Color) -> Painted<&T>
fn bg(&self, value: Color) -> Painted<&T>
Returns a styled value derived from self with the background set to
value.
This method should be used rarely. Instead, prefer to use color-specific
builder methods like on_red() and
on_green(), which have the same functionality but
are pithier.
§Example
Set background color to red using fg():
use yansi::{Paint, Color};
painted.bg(Color::Red);Set background color to red using on_red().
use yansi::Paint;
painted.on_red();Source§fn on_primary(&self) -> Painted<&T>
fn on_primary(&self) -> Painted<&T>
Source§fn on_magenta(&self) -> Painted<&T>
fn on_magenta(&self) -> Painted<&T>
Source§fn on_bright_black(&self) -> Painted<&T>
fn on_bright_black(&self) -> Painted<&T>
Source§fn on_bright_red(&self) -> Painted<&T>
fn on_bright_red(&self) -> Painted<&T>
Source§fn on_bright_green(&self) -> Painted<&T>
fn on_bright_green(&self) -> Painted<&T>
Source§fn on_bright_yellow(&self) -> Painted<&T>
fn on_bright_yellow(&self) -> Painted<&T>
Source§fn on_bright_blue(&self) -> Painted<&T>
fn on_bright_blue(&self) -> Painted<&T>
Source§fn on_bright_magenta(&self) -> Painted<&T>
fn on_bright_magenta(&self) -> Painted<&T>
Source§fn on_bright_cyan(&self) -> Painted<&T>
fn on_bright_cyan(&self) -> Painted<&T>
Source§fn on_bright_white(&self) -> Painted<&T>
fn on_bright_white(&self) -> Painted<&T>
Source§fn attr(&self, value: Attribute) -> Painted<&T>
fn attr(&self, value: Attribute) -> Painted<&T>
Enables the styling Attribute value.
This method should be used rarely. Instead, prefer to use
attribute-specific builder methods like bold() and
underline(), which have the same functionality
but are pithier.
§Example
Make text bold using attr():
use yansi::{Paint, Attribute};
painted.attr(Attribute::Bold);Make text bold using using bold().
use yansi::Paint;
painted.bold();Source§fn rapid_blink(&self) -> Painted<&T>
fn rapid_blink(&self) -> Painted<&T>
Source§fn quirk(&self, value: Quirk) -> Painted<&T>
fn quirk(&self, value: Quirk) -> Painted<&T>
Enables the yansi Quirk value.
This method should be used rarely. Instead, prefer to use quirk-specific
builder methods like mask() and
wrap(), which have the same functionality but are
pithier.
§Example
Enable wrapping using .quirk():
use yansi::{Paint, Quirk};
painted.quirk(Quirk::Wrap);Enable wrapping using wrap().
use yansi::Paint;
painted.wrap();Source§fn clear(&self) -> Painted<&T>
👎Deprecated since 1.0.1: renamed to resetting() due to conflicts with Vec::clear().
The clear() method will be removed in a future release.
fn clear(&self) -> Painted<&T>
renamed to resetting() due to conflicts with Vec::clear().
The clear() method will be removed in a future release.
Source§fn whenever(&self, value: Condition) -> Painted<&T>
fn whenever(&self, value: Condition) -> Painted<&T>
Conditionally enable styling based on whether the Condition value
applies. Replaces any previous condition.
See the crate level docs for more details.
§Example
Enable styling painted only when both stdout and stderr are TTYs:
use yansi::{Paint, Condition};
painted.red().on_yellow().whenever(Condition::STDOUTERR_ARE_TTY);