Skip to main content

ValueRef

Enum ValueRef 

Source
#[non_exhaustive]
pub enum ValueRef<'a> {
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(&'a [u8]), Blob(&'a [u8]), Geometry(&'a [u8]), Date32(i32), Time64(TimeUnit, i64), Interval { months: i32, days: i32, nanos: i64, }, List(ListType<'a>, usize), Enum(EnumType<'a>, usize), Struct(&'a StructArray, usize), Array(&'a FixedSizeListArray, usize), Map(&'a MapArray, usize), Union(&'a ArrayRef, usize),
}
Expand description

A non-owning static type value. Typically the memory backing this value is owned by DuckDB.

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

See Value for an 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 decode to this variant because row decoding uses DuckDB logical type metadata. Borrowed container values do not carry that metadata and cannot recover nested UHUGEINT 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(&'a [u8])

The value is a text string.

§

Blob(&'a [u8])

The value is a blob of data

§

Geometry(&'a [u8])

The value is a top-level GEOMETRY, represented as WKB bytes.

Nested GEOMETRY values currently materialize through their Arrow binary carrier as Blob values. See Value::Geometry for binding and appender guidance.

§

Date32(i32)

The value is a date32

§

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(ListType<'a>, usize)

The value is a list.

§

Enum(EnumType<'a>, usize)

The value is an enum

§

Struct(&'a StructArray, usize)

The value is a struct.

§

Array(&'a FixedSizeListArray, usize)

The value is an array.

§

Map(&'a MapArray, usize)

The value is a map.

§

Union(&'a ArrayRef, usize)

The value is a union.

Implementations§

Source§

impl ValueRef<'_>

Source

pub fn data_type(&self) -> Type

Returns DuckDB fundamental datatype.

Source

pub fn to_owned(&self) -> Value

Returns an owned version of this ValueRef

Source§

impl<'a> ValueRef<'a>

Source

pub fn as_str(&self) -> FromSqlResult<&'a str>

If self is Text or Enum, returns the string value. Otherwise, returns Err(FromSqlError::InvalidType).

Source

pub fn as_blob(&self) -> FromSqlResult<&'a [u8]>

If self is Blob, Text, or Geometry, returns the byte slice. Otherwise, returns Err(FromSqlError::InvalidType).

Source

pub fn as_geometry_wkb(&self) -> FromSqlResult<&'a [u8]>

If self is Geometry, returns the WKB byte slice. Otherwise, returns Err(FromSqlError::InvalidType).

Trait Implementations§

Source§

impl<'a> Clone for ValueRef<'a>

Source§

fn clone(&self) -> ValueRef<'a>

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<'a> Copy for ValueRef<'a>

Source§

impl<'a> Debug for ValueRef<'a>

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<'a> From<&'a [u8]> for ValueRef<'a>

Source§

fn from(s: &[u8]) -> ValueRef<'_>

Converts to this type from the input type.
Source§

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

Source§

fn from(s: &str) -> ValueRef<'_>

Converts to this type from the input type.
Source§

impl From<Decimal> for ValueRef<'_>

Source§

fn from(decimal: Decimal) -> Self

Converts to this type from the input type.
Source§

impl<'a, T> From<Option<T>> for ValueRef<'a>
where T: Into<Self>,

Source§

fn from(s: Option<T>) -> 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<'a> PartialEq for ValueRef<'a>

Source§

fn eq(&self, other: &ValueRef<'a>) -> bool

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

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

Inequality operator !=. Read more
Source§

impl<'a> StructuralPartialEq for ValueRef<'a>

Auto Trait Implementations§

§

impl<'a> !RefUnwindSafe for ValueRef<'a>

§

impl<'a> !UnwindSafe for ValueRef<'a>

§

impl<'a> Freeze for ValueRef<'a>

§

impl<'a> Send for ValueRef<'a>

§

impl<'a> Sync for ValueRef<'a>

§

impl<'a> Unpin for ValueRef<'a>

§

impl<'a> UnsafeUnpin for ValueRef<'a>

Blanket Implementations§

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.