Skip to main content

FieldStruct

Struct FieldStruct 

Source
pub struct FieldStruct {
    pub id: ModelId,
    pub fields: Vec<Field>,
    pub columns: IndexMap<ColumnId, usize>,
    pub field_mask: PathFieldSet,
    pub sub_projection: Projection,
    pub default_returning: Expr,
    pub presence: Option<ColumnId>,
}
Expand description

Maps an embedded struct field to its flattened column representation.

Embedded fields are stored by flattening their primitive fields into columns with names like {field}_{embedded_field}. This structure tracks the mapping for each field in the embedded struct.

§Examples

use toasty_core::schema::mapping::FieldStruct;

let s: &FieldStruct = field.as_struct().unwrap();
println!("{} nested fields, {} columns", s.fields.len(), s.columns.len());

Fields§

§id: ModelId

The ModelId of the embedded struct model this mapping corresponds to.

§fields: Vec<Field>

Per-field mappings for the embedded struct’s fields.

Indexed by field index within the embedded model.

§columns: IndexMap<ColumnId, usize>

Flattened mapping from columns to lowering expression indices.

This map contains all columns impacted by this embedded field, paired with their corresponding lowering expression index in Model::model_to_table.

§field_mask: PathFieldSet

Update coverage mask for this embedded field.

The union of the field_mask bits of every primitive nested within this embedded struct (recursively).

§sub_projection: Projection

The projection from the root model field down to this embedded field within the type hierarchy. Identity for root-level embedded fields.

§default_returning: Expr

Pre-computed default record expression for this embedded struct.

Record([..]) shape matching the struct’s fields, with deferred sub-fields (direct or further nested) pre-masked to Null. Spliced in by process_includes when a parent .include() activates a Deferred<EmbedStruct> field.

§presence: Option<ColumnId>

The presence head column of a nullable embedded struct (Option<Embed>).

None for a non-nullable embed. Some(column) when the field is Option<Embed>: the head column whose null-ness is the option’s none-ness (NULL = None), like Option<scalar> and an embedded enum’s discriminant. Usually a dedicated nullable bool column (NULL = None, true = Some); for a single-column (newtype) embed it is the flattened leaf reused as the head. The encode lowering forces every flattened leaf column nullable and the decode wraps the struct record in a Match on this column, so a None value round-trips without colliding with a Some whose fields are all themselves None. The column’s own encode lowering (if dedicated) is tracked in columns.

Trait Implementations§

Source§

impl Clone for FieldStruct

Source§

fn clone(&self) -> FieldStruct

Returns a duplicate of the value. Read more
1.0.0 · Source§

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

Performs copy-assignment from source. Read more
Source§

impl Debug for FieldStruct

Source§

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

Formats the value using the given formatter. Read more

Auto Trait Implementations§

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<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.

§

impl<T> Instrument for T

§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided [Span], returning an Instrumented wrapper. Read more
§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
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> 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 = Infallible

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

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

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.
§

impl<T> WithSubscriber for T

§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a [WithDispatch] wrapper. Read more
§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a [WithDispatch] wrapper. Read more