pub struct DeconSpec {
pub source: TypeRef,
pub leaves: Vec<UnfoldLeaf>,
}Expand description
The declaration-default decomposition of one deconstructor: its leaf
list resolved ONCE from the declaration’s records with normalized
inputs (borrowed identity form, no outer shape), so the content is
independent of which functions use the declaration and in what order.
Stored in Registry::decon_plans; the single source language adapters
derive declaration-keyed signature artifacts (e.g. generated callback
interfaces) from. Per-function aspects (by_ref, shape, delivery) live on
each function’s UnfoldPlan, which points here via UnfoldPlan::decon.
Normalization detail: the identity leaf’s out_ty is always the borrowed
&Source form (an owned-return function’s own plan carries owned Source
instead) — both resolve to the same projection/class, and adapters reading
the spec must tolerate whichever form their type tables resolved.
Fields§
§source: TypeRefThe decomposed type as first encountered. A reading, so “compare via
TypeKey, not syntactically” is
the type rather than an instruction: source.key() is the identity and
source.spell() is what generated Rust says.
leaves: Vec<UnfoldLeaf>Flattened leaves in declared record order — names, types, paths, nullability all declaration-fixed.
Trait Implementations§
Auto Trait Implementations§
impl !Send for DeconSpec
impl !Sync for DeconSpec
impl Freeze for DeconSpec
impl RefUnwindSafe for DeconSpec
impl Unpin for DeconSpec
impl UnsafeUnpin for DeconSpec
impl UnwindSafe for DeconSpec
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<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