Skip to main content

Value

Enum Value 

Source
#[non_exhaustive]
pub enum Value {
Show 28 variants Null, Boolean(bool), TinyInt(i8), SmallInt(i16), Int(i32), BigInt(i64), HugeInt(i128), UHugeInt(u128), UTinyInt(u8), USmallInt(u16), UInt(u32), UBigInt(u64), Float(f32), Double(f64), Decimal(Decimal), Timestamp(TimeUnit, i64), Text(String), Blob(Vec<u8>), Geometry(Vec<u8>), Date32(i32), Time64(TimeUnit, i64), Interval { months: i32, days: i32, nanos: i64, }, List(Vec<Value>), Enum(String), Struct(OrderedMap<String, Value>), Array(Vec<Value>), Map(OrderedMap<Value, Value>), Union(Box<Value>),
}
Expand description

Owning dynamic type value. Value’s type is typically dictated by DuckDB (not by the caller).

Container variants decode child values without DuckDB child logical type metadata. See the crate::types compatibility notes for UHUGEINT behavior inside containers.

See ValueRef for a non-owning dynamic type value.

Variants (Non-exhaustive)§

This enum is marked as non-exhaustive
Non-exhaustive enums could have additional variants added in future. Therefore, when matching against variants of non-exhaustive enums, an extra wildcard arm must be added to account for any future variants.
§

Null

The value is a NULL value.

§

Boolean(bool)

The value is a boolean.

§

TinyInt(i8)

The value is a signed tiny integer.

§

SmallInt(i16)

The value is a signed small integer.

§

Int(i32)

The value is a signed integer.

§

BigInt(i64)

The value is a signed big integer.

§

HugeInt(i128)

The value is a signed huge integer.

§

UHugeInt(u128)

The value is an unsigned huge integer.

Top-level UHUGEINT result values materialize as this variant. Nested UHUGEINT values inside lists, structs, maps, arrays, and unions do not currently carry DuckDB child logical metadata and cannot recover values above i128::MAX.

§

UTinyInt(u8)

The value is a unsigned tiny integer.

§

USmallInt(u16)

The value is a unsigned small integer.

§

UInt(u32)

The value is a unsigned integer.

§

UBigInt(u64)

The value is a unsigned big integer.

§

Float(f32)

The value is a f32.

§

Double(f64)

The value is a f64.

§

Decimal(Decimal)

The value is a DuckDB decimal.

Decimal stores DuckDB’s decimal width, scale, and scaled integer payload.

§

Timestamp(TimeUnit, i64)

The value is a timestamp.

§

Text(String)

The value is a text string.

§

Blob(Vec<u8>)

The value is a blob of data

§

Geometry(Vec<u8>)

The value is a GEOMETRY, represented as WKB bytes.

As of the bundled DuckDB version, DuckDB does not expose a dedicated geometry bind or appender helper. Binding this variant routes its WKB bytes through the BLOB APIs. Use spatial SQL such as ST_GeomFromWKB(?) when binding WKB bytes into a GEOMETRY SQL context. Appender writes can stage these bytes in BLOB columns; appending directly to GEOMETRY columns is not supported. See ValueRef::Geometry for borrowed geometry values.

§

Date32(i32)

The value is a date32

The i32 represents the number of days since the Unix epoch (1970-01-01).

Enable the chrono feature for easy conversion to proper date types like NaiveDate.

§

Time64(TimeUnit, i64)

The value is a time64

§

Interval

The value is an interval (month, day, nano)

Fields

§months: i32

months

§days: i32

days

§nanos: i64

nanos

§

List(Vec<Value>)

The value is a list.

§

Enum(String)

The value is an enum

§

Struct(OrderedMap<String, Value>)

The value is a struct.

§

Array(Vec<Value>)

The value is an array.

§

Map(OrderedMap<Value, Value>)

The value is a map.

§

Union(Box<Value>)

The value is a union.

Implementations§

Source§

impl Value

Source

pub fn data_type(&self) -> Type

Returns DuckDB fundamental datatype.

Trait Implementations§

Source§

impl Clone for Value

Source§

fn clone(&self) -> Value

Returns a duplicate of the value. Read more
1.0.0 (const: unstable) · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Debug for Value

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl<'a> From<&'a Value> for ValueRef<'a>

Source§

fn from(value: &'a Value) -> Self

Converts non-container Value variants into a borrowed ValueRef.

§Panics

Panics for Value::Enum, Value::List, Value::Struct, Value::Map, Value::Array, and Value::Union. Internal bind and append paths use value_ref_from_value for fallible conversion.

Source§

impl From<Decimal> for Value

Source§

fn from(decimal: Decimal) -> Self

Converts to this type from the input type.
Source§

impl From<Null> for Value

Source§

fn from(_: Null) -> Self

Converts to this type from the input type.
Source§

impl<T> From<Option<T>> for Value
where T: Into<Self>,

Source§

fn from(v: Option<T>) -> Self

Converts to this type from the input type.
Source§

impl From<String> for Value

Source§

fn from(s: String) -> Self

Converts to this type from the input type.
Source§

impl From<ValueRef<'_>> for Value

Source§

fn from(borrowed: ValueRef<'_>) -> Self

Converts to this type from the input type.
Source§

impl From<Vec<u8>> for Value

Source§

fn from(v: Vec<u8>) -> Self

Converts to this type from the input type.
Source§

impl From<bool> for Value

Source§

fn from(i: bool) -> Self

Converts to this type from the input type.
Source§

impl From<f32> for Value

Source§

fn from(f: f32) -> Self

Converts to this type from the input type.
Source§

impl From<f64> for Value

Source§

fn from(f: f64) -> Self

Converts to this type from the input type.
Source§

impl From<i8> for Value

Source§

fn from(i: i8) -> Self

Converts to this type from the input type.
Source§

impl From<i16> for Value

Source§

fn from(i: i16) -> Self

Converts to this type from the input type.
Source§

impl From<i32> for Value

Source§

fn from(i: i32) -> Self

Converts to this type from the input type.
Source§

impl From<i64> for Value

Source§

fn from(i: i64) -> Self

Converts to this type from the input type.
Source§

impl From<i128> for Value

Source§

fn from(i: i128) -> Self

Converts to this type from the input type.
Source§

impl From<isize> for Value

Source§

fn from(i: isize) -> Self

Converts to this type from the input type.
Source§

impl From<u8> for Value

Source§

fn from(i: u8) -> Self

Converts to this type from the input type.
Source§

impl From<u16> for Value

Source§

fn from(i: u16) -> Self

Converts to this type from the input type.
Source§

impl From<u32> for Value

Source§

fn from(i: u32) -> Self

Converts to this type from the input type.
Source§

impl From<u64> for Value

Source§

fn from(i: u64) -> Self

Converts to this type from the input type.
Source§

impl From<u128> for Value

Source§

fn from(i: u128) -> Self

Converts to this type from the input type.
Source§

impl From<usize> for Value

Source§

fn from(i: usize) -> Self

Converts to this type from the input type.
Source§

impl FromSql for Value

Source§

fn column_result(value: ValueRef<'_>) -> FromSqlResult<Self>

Converts DuckDB value into Rust value.
Source§

impl PartialEq for Value

Source§

fn eq(&self, other: &Value) -> bool

Equality operator ==. Read more
1.0.0 (const: unstable) · Source§

fn ne(&self, other: &Rhs) -> bool

Inequality operator !=. Read more
Source§

impl StructuralPartialEq for Value

Source§

impl ToSql for Value

Source§

fn to_sql(&self) -> Result<ToSqlOutput<'_>>

Converts Rust value to DuckDB value

Auto Trait Implementations§

§

impl Freeze for Value

§

impl RefUnwindSafe for Value

§

impl Send for Value

§

impl Sync for Value

§

impl Unpin for Value

§

impl UnsafeUnpin for Value

§

impl UnwindSafe for Value

Blanket Implementations§

Source§

impl<T> Allocation for T
where T: RefUnwindSafe + Send + Sync,

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
where ST: ?Sized, DT: ?Sized,

Source§

impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
where ST: ?Sized, DT: ?Sized,

Source§

impl<T> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> Read<Exclusive, BecauseExclusive> for T
where T: ?Sized,

Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = !

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, !>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.