pub struct FieldEnum {
pub discriminant: FieldPrimitive,
pub variants: Vec<EnumVariant>,
pub field_mask: PathFieldSet,
pub sub_projection: Projection,
pub default_returning: Expr,
}Expand description
Maps an embedded enum field to its discriminant column and per-variant data columns.
The discriminant column stores the active variant’s discriminant (integer or string). Each data variant additionally has nullable columns for its fields; unit variants have no extra columns (all variant-field columns are NULL for them).
§Examples
use toasty_core::schema::mapping::FieldEnum;
let e: &FieldEnum = field.as_enum().unwrap();
println!("discriminant column: {:?}", e.discriminant.column);
println!("{} variants", e.variants.len());Fields§
§discriminant: FieldPrimitiveMapping for the discriminant column.
variants: Vec<EnumVariant>Per-variant mappings, in the same order as app::EmbeddedEnum::variants.
field_mask: PathFieldSetUpdate coverage mask for the enum field (singleton: the whole enum changes atomically).
sub_projection: ProjectionSub-projection from the root model field to this enum field.
default_returning: ExprPre-computed default expression for this embedded enum.
For unit-only enums this is the discriminant column reference. For
data-carrying enums it is the full Match { disc, arms[], else }
expression with per-arm records (currently identical to the raw
table_to_model shape — #[deferred] on a variant field is
rejected at the macro layer; if it is ever lifted, the per-arm
records would mask their deferred fields here).