pub enum Field {
Primitive(FieldPrimitive),
Struct(FieldStruct),
Enum(FieldEnum),
Relation(FieldRelation),
}Expand description
Maps a model field to its database storage representation.
Different field types have different storage strategies:
- Primitive fields map to a single column
- Struct fields flatten an embedded struct to multiple columns
- Enum fields map to a discriminant column plus per-variant data columns
- Relation fields (
BelongsTo,HasMany,HasOne) don’t have direct column storage
Variants§
Primitive(FieldPrimitive)
A primitive field stored in a single column.
Struct(FieldStruct)
An embedded struct field flattened into multiple columns.
Enum(FieldEnum)
An embedded enum field stored as a discriminant column plus per-variant data columns.
Relation(FieldRelation)
A relation field that doesn’t map to columns in this table.
Implementations§
Source§impl Field
impl Field
Sourcepub fn field_mask(&self) -> PathFieldSet
pub fn field_mask(&self) -> PathFieldSet
Returns the update coverage mask for this field.
Each primitive (leaf) field in the model is assigned a unique bit. The mask for a given mapping field is the set of those bits that correspond to the primitives it covers:
Primitive→ singleton set containing only its own bitStruct→ union of all nested primitive bits (recursively)Enum→ singleton set (the whole enum value changes atomically)Relation→ singleton set (assigned a bit for uniform tracking)
Masks are used during update lowering to determine whether a partial
update fully covers an embedded field or only touches some of its
sub-fields. Intersecting changed_mask with a field’s field_mask
yields the subset of that field’s primitives being updated; equality
with the full field_mask means full coverage.
Sourcepub fn sub_projection(&self) -> &Projection
pub fn sub_projection(&self) -> &Projection
Returns the sub-projection from the root model field to this field within the embedded type hierarchy. Identity for root-level fields.
pub fn is_relation(&self) -> bool
pub fn as_primitive(&self) -> Option<&FieldPrimitive>
pub fn as_primitive_mut(&mut self) -> Option<&mut FieldPrimitive>
pub fn as_struct(&self) -> Option<&FieldStruct>
pub fn as_enum(&self) -> Option<&FieldEnum>
Sourcepub fn columns(&self) -> impl Iterator<Item = (ColumnId, usize)> + '_
pub fn columns(&self) -> impl Iterator<Item = (ColumnId, usize)> + '_
Returns an iterator over all (column, lowering) pairs impacted by this field.
For primitive fields, yields a single pair. For struct fields, yields all flattened columns. For enum fields, yields the discriminant column plus all variant data columns. For relation fields, yields nothing.