#[non_exhaustive]pub enum ColumnType<'frame> {
Native(NativeType),
Collection {
frozen: bool,
typ: CollectionType<'frame>,
},
Vector {
typ: Box<ColumnType<'frame>>,
dimensions: u16,
},
UserDefinedType {
frozen: bool,
definition: Arc<UserDefinedType<'frame>>,
},
Tuple(Vec<ColumnType<'frame>>),
}
Expand description
A type of:
- a column in schema metadata
- a bind marker in a prepared statement
- a column a in query result set
Some of the variants contain a frozen
flag. This flag is only used
in schema metadata. For prepared statement bind markers and query result
types those fields will always be set to false
(even if the DB column
corresponding to given marker / result type is frozen).
Variants (Non-exhaustive)§
This enum is marked as non-exhaustive
Native(NativeType)
Types that are “simple” (non-recursive).
Collection
Collection types: Map, Set, and List. Those are composite types with dynamic size but constant predefined element types.
Fields
frozen: bool
If a collection is not frozen, elements in the collection can be updated individually. If it is frozen, the entire collection will be overwritten when it is updated. A collection cannot contain another collection unless the inner collection is frozen. The frozen type will be treated as a blob.
typ: CollectionType<'frame>
Type of the collection’s elements.
Vector
A composite list-like type that has a defined size and all its elements are of the same type. Intuitively, it can be viewed as a list with constant predefined size, or as a tuple which has all elements of the same type.
Fields
typ: Box<ColumnType<'frame>>
Type of the vector’s elements.
UserDefinedType
A C-struct-like type defined by the user.
Fields
frozen: bool
Analogous to ColumnType::Collection::frozen. If a UDT is not frozen, elements in the UDT can be updated individually. If it is frozen, the entire UDT will be overwritten when it is updated. A UDT cannot contain another UDT unless the inner UDT is frozen. The frozen type will be treated as a blob.
definition: Arc<UserDefinedType<'frame>>
Definition of the user-defined type.
Tuple(Vec<ColumnType<'frame>>)
A composite type with a defined size and elements of possibly different, but predefined, types.
Implementations§
Source§impl ColumnType<'_>
impl ColumnType<'_>
Sourcepub fn into_owned(self) -> ColumnType<'static>
pub fn into_owned(self) -> ColumnType<'static>
Converts a ColumnType to an owned version, where all references are replaced with owned values.
Unfortunately, this allocates even if the type is already owned.
Trait Implementations§
Source§impl<'frame> Clone for ColumnType<'frame>
impl<'frame> Clone for ColumnType<'frame>
Source§fn clone(&self) -> ColumnType<'frame>
fn clone(&self) -> ColumnType<'frame>
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source
. Read moreSource§impl<'frame> Debug for ColumnType<'frame>
impl<'frame> Debug for ColumnType<'frame>
Source§impl<'frame> PartialEq for ColumnType<'frame>
impl<'frame> PartialEq for ColumnType<'frame>
impl<'frame> Eq for ColumnType<'frame>
impl<'frame> StructuralPartialEq for ColumnType<'frame>
Auto Trait Implementations§
impl<'frame> Freeze for ColumnType<'frame>
impl<'frame> RefUnwindSafe for ColumnType<'frame>
impl<'frame> Send for ColumnType<'frame>
impl<'frame> Sync for ColumnType<'frame>
impl<'frame> Unpin for ColumnType<'frame>
impl<'frame> UnwindSafe for ColumnType<'frame>
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<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<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
self
into a Left
variant of Either<Self, Self>
if into_left
is true
.
Converts self
into a Right
variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
self
into a Left
variant of Either<Self, Self>
if into_left(&self)
returns true
.
Converts self
into a Right
variant of Either<Self, Self>
otherwise. Read more