Skip to main content

FeatureResult

Struct FeatureResult 

Source
pub struct FeatureResult {
Show 14 fields pub id: String, pub feature_type: String, pub added: Vec<AddedSolid>, pub removed: Vec<String>, pub error: Option<String>, pub unresolved: Vec<String>, pub reused: bool, pub profiles: Vec<(String, SketchProfile)>, pub frames: Vec<(String, Frame)>, pub axes: Vec<(String, Axis)>, pub paths: Vec<(String, Vec<NurbsCurve>)>, pub path_segment_names: Vec<(String, Vec<Option<String>>)>, pub points: Vec<(String, Vec3)>, pub components: Vec<ComponentRecord>,
}
Expand description

The output of one feature execution.

Fields§

§id: String§feature_type: String§added: Vec<AddedSolid>§removed: Vec<String>

Names of prior solids this feature consumed/superseded (removed from the scene-map; their handles are freed by the loop).

§error: Option<String>

Set on a hard failure. execute_history records it and HALTS the remaining features (mirrors the abort-on-error loop). Never a panic.

§unresolved: Vec<String>

reference_selection names this feature could not resolve against the scene-map. NOT an error/halt — the caller runs a snapshot-repair pass and re-dispatches (migration-plan Stage 5 gate).

§reused: bool

True when this result was REPLAYED from the incremental history cache (the feature and everything it references are unchanged since the last run). The handles are the same resident solids — the caller can skip re-tessellation.

§profiles: Vec<(String, SketchProfile)>

Sketch profiles this feature produced (a SKETCH feature emits one under its name; solid features emit none). INTERNAL side-channel: #[serde(skip)] so it never crosses the wasm boundary to the caller — [SceneMap::apply] ingests it into scene.profiles for downstream profile-consumers (extrude/revolve/…).

§frames: Vec<(String, Frame)>

Named plane frames this feature produced (DATUM emits three, PLANE one). Same INTERNAL #[serde(skip)] side-channel — ingested into scene.frames so a later SKETCH can resolve its plane by name, fully headless.

§axes: Vec<(String, Axis)>

Named axis lines this feature produced (a SKETCH emits one per line geometry). Same INTERNAL #[serde(skip)] side-channel — ingested into scene.axes so a later revolve/sweep can resolve its axis by name.

§paths: Vec<(String, Vec<NurbsCurve>)>

Named path chains this feature produced (a SKETCH publishes its ordered open/closed geometry chain). Same INTERNAL #[serde(skip)] side-channel — ingested into scene.paths for sweep/path_sweep/rib trajectory resolution.

§path_segment_names: Vec<(String, Vec<Option<String>>)>

The SOURCE NAME of each curve in a published path chain, parallel to the matching Self::paths entry ({sketchId}:G{gid} for a sketch segment, None for a curve with no name behind it). Same INTERNAL #[serde(skip)] side-channel — ingested into scene.path_segment_names so a multi-segment consumer (the SWEEP) can name the geometry each PATH SEGMENT built after that segment, instead of after its position in the chain.

§points: Vec<(String, Vec3)>

Named world points this feature produced (a SKETCH publishes every point as {sketchId}:P{pid}). Same side-channel — ingested into scene.points for hole-center / placement resolution.

§components: Vec<ComponentRecord>

Component records this feature produced (an ACOMP feature emits one per instance; its members ride added like any solids). Same INTERNAL #[serde(skip)] side-channel — ingested into scene.components so the component surface (component.rs) resolves against the live scene.

Implementations§

Source§

impl FeatureResult

Source

pub fn empty(id: impl Into<String>, feature_type: impl Into<String>) -> Self

An empty successful result (no solids, no error) — the shape a non-solid pass-through feature returns.

Source

pub fn error( id: impl Into<String>, feature_type: impl Into<String>, message: impl Into<String>, ) -> Self

A hard failure. Halts the history loop.

Source

pub fn pass_through( id: impl Into<String>, feature_type: impl Into<String>, ) -> Self

A non-solid construction feature (datum/plane/sketch/spline/port/helix): a descriptor pass-through with no resident handle. The loop continues.

Source

pub fn not_yet_migrated( id: impl Into<String>, feature_type: impl Into<String>, ) -> Self

A solid-producing (or no-kernel) feature not yet ported to Rust. Halts the loop with a clear message — replaced when a fan-out agent implements the feature’s features/<feat>.rs.

Trait Implementations§

Source§

impl Clone for FeatureResult

Source§

fn clone(&self) -> FeatureResult

Returns a duplicate of the value. Read more
1.0.0 (const: unstable) · Source§

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

Performs copy-assignment from source. Read more
Source§

impl Debug for FeatureResult

Source§

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

Formats the value using the given formatter. Read more
Source§

impl Serialize for FeatureResult

Source§

fn serialize<__S>(&self, __serializer: __S) -> Result<__S::Ok, __S::Error>
where __S: Serializer,

Serialize this value into the given Serde serializer. 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.

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 = !

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

fn try_from(value: U) -> Result<T, !>

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

impl<S, T> Upcast<T> for S
where T: UpcastFrom<S> + ?Sized, S: ?Sized,

Source§

fn upcast(&self) -> &T
where Self: ErasableGeneric, T: Sized + ErasableGeneric<Repr = Self::Repr>,

Perform a zero-cost type-safe upcast to a wider ref type within the Wasm bindgen generics type system. Read more
Source§

fn upcast_into(self) -> T
where Self: Sized + ErasableGeneric, T: Sized + ErasableGeneric<Repr = Self::Repr>,

Perform a zero-cost type-safe upcast to a wider type within the Wasm bindgen generics type system. Read more