pub struct VariableTypeInfo {
pub schema_id: Option<SchemaId>,
pub type_name: Option<String>,
pub is_definite: bool,
pub storage_hint: Option<StorageHint>,
pub concrete_numeric_type: Option<String>,
pub kind: VariableKind,
pub v2_array_element_kind: Option<FieldKind>,
pub v2_struct_layout: Option<SchemaId>,
}Expand description
Type information for a variable
Fields§
§schema_id: Option<SchemaId>Schema ID if type is known and registered
type_name: Option<String>Type name (e.g., “Candle”, “Point”)
is_definite: boolWhether the type is definitely known (vs inferred/uncertain)
storage_hint: Option<StorageHint>Storage hint for JIT optimization, or None when the kind is
not yet proven during compile-time inference.
Per ADR-006 §2.7.5.1, this is compiler-tier intermediate state —
VariableTypeInfo is NOT serialized into FunctionBlob, so the
Option<NativeKind> wrap stays local to the analysis pass and
does not reach the wire format. By the time a FrameDescriptor
is constructed for FunctionBlob, the kind is proven and stored
flat in FrameDescriptor.slots: Vec<NativeKind> (no Option).
concrete_numeric_type: Option<String>Preserved concrete numeric runtime type (e.g. “i16”, “u8”, “f32”, “i64”) derived from source annotations.
kind: VariableKindWhat kind of variable this is (value, table, row view, column)
v2_array_element_kind: Option<FieldKind>v2: For typed arrays, the element’s FieldKind (enables typed array codegen)
v2_struct_layout: Option<SchemaId>v2: For typed structs, the SchemaId referencing a StructLayout in TypeTracker
Implementations§
Source§impl VariableTypeInfo
impl VariableTypeInfo
Sourcepub fn named(type_name: String) -> Self
pub fn named(type_name: String) -> Self
Create type info for a type name that may or may not be registered
Sourcepub fn with_storage(type_name: String, storage_hint: StorageHint) -> Self
pub fn with_storage(type_name: String, storage_hint: StorageHint) -> Self
Create type info with explicit storage hint
Sourcepub fn nullable_number() -> Self
pub fn nullable_number() -> Self
Create type info for Option
Sourcepub fn row_view(schema_id: SchemaId, type_name: String) -> Self
pub fn row_view(schema_id: SchemaId, type_name: String) -> Self
Create type info for a RowView variable (typed row from Arrow DataTable).
Sourcepub fn datatable(schema_id: SchemaId, type_name: String) -> Self
pub fn datatable(schema_id: SchemaId, type_name: String) -> Self
Create type info for a DataTable variable with known schema (Table
Sourcepub fn column(
schema_id: SchemaId,
type_name: String,
element_type: String,
) -> Self
pub fn column( schema_id: SchemaId, type_name: String, element_type: String, ) -> Self
Create type info for a Column
Sourcepub fn indexed(
schema_id: SchemaId,
type_name: String,
index_column: String,
) -> Self
pub fn indexed( schema_id: SchemaId, type_name: String, index_column: String, ) -> Self
Create type info for an Indexed table variable — Indexed
Sourcepub fn uses_nan_sentinel(&self) -> bool
pub fn uses_nan_sentinel(&self) -> bool
Check if this type uses NaN sentinel for nullability
Sourcepub fn is_datatable(&self) -> bool
pub fn is_datatable(&self) -> bool
Check if this variable is a DataTable (Table
Sourcepub fn is_row_view(&self) -> bool
pub fn is_row_view(&self) -> bool
Check if this variable is a RowView (Row
Sourcepub fn is_indexed(&self) -> bool
pub fn is_indexed(&self) -> bool
Check if this variable is an Indexed table (Indexed
Trait Implementations§
Source§impl Clone for VariableTypeInfo
impl Clone for VariableTypeInfo
Auto Trait Implementations§
impl Freeze for VariableTypeInfo
impl RefUnwindSafe for VariableTypeInfo
impl Send for VariableTypeInfo
impl Sync for VariableTypeInfo
impl Unpin for VariableTypeInfo
impl UnsafeUnpin for VariableTypeInfo
impl UnwindSafe for VariableTypeInfo
Blanket Implementations§
impl<T> Allocation for T
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<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