Skip to main content

VariantShape

Struct VariantShape 

Source
pub struct VariantShape { /* private fields */ }
Expand description

A kernel Shape that matches one specific ADT variant by tag and fields.

VariantShape accepts a TaggedValue whose ADT and variant match and whose fields each pass their PatternField shape, accumulating their captures. It also matches the equivalent constructor Expr, and reports subshape relationships against sibling variants and the enclosing AdtShape.

Implementations§

Source§

impl VariantShape

Source

pub fn new(adt: Symbol, variant: Symbol, fields: Vec<PatternField>) -> Self

Builds a variant shape from its ADT name, variant tag, and fields.

Source

pub fn adt(&self) -> &Symbol

Returns the owning ADT name symbol.

Source

pub fn variant(&self) -> &Symbol

Returns the variant tag symbol.

Source

pub fn fields(&self) -> &[PatternField]

Returns the variant fields in declaration order.

Trait Implementations§

Source§

impl Clone for VariantShape

Source§

fn clone(&self) -> VariantShape

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 Shape for VariantShape

Source§

fn symbol(&self) -> Option<Symbol>

Symbol naming this shape when it has one, else None.
Source§

fn is_subshape_of( &self, cx: &mut Cx, parent: &dyn Shape, ) -> Result<Option<bool>>

Return a concrete implication answer when this shape owns the semantics. Read more
Source§

fn check_value(&self, cx: &mut Cx, value: Value) -> Result<ShapeMatch>

Check a Value against this shape, yielding a ShapeMatch.
Source§

fn check_expr(&self, cx: &mut Cx, expr: &Expr) -> Result<ShapeMatch>

Check an Expr against this shape, yielding a ShapeMatch.
Source§

fn describe(&self, _cx: &mut Cx) -> Result<ShapeDoc>

Produce the human-facing ShapeDoc for this shape.
Source§

fn id(&self) -> Option<ShapeId>

Stable ShapeId when this shape has runtime identity, else None.
Source§

fn parents(&self, _cx: &mut Cx) -> Result<Vec<Value>, Error>

Parent shapes for the subshape walk; empty by default.
Source§

fn is_effectful(&self) -> bool

Whether matching this shape may run effects; false by default.
Source§

fn is_total(&self) -> bool

Whether this shape accepts every input in its domain; false by default.

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> Callable for T
where T: Shape,

Source§

fn call(&self, cx: &mut Cx, args: Args) -> Result<Value, Error>

Invoke the callable with already-evaluated, checked Args.
Source§

fn call_exprs(&self, cx: &mut Cx, args: RawArgs) -> Result<Value, Error>

Invoke the callable on raw, unevaluated argument expressions. Read more
Source§

fn browse_args_shape(&self, _cx: &mut Cx) -> Result<Option<Value>, Error>

Optional shape describing the accepted argument list, for browsing.
Source§

fn browse_result_shape(&self, _cx: &mut Cx) -> Result<Option<Value>, Error>

Optional shape describing the call result, for browsing.
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> Object for T
where T: Shape + Any,

Source§

fn display(&self, cx: &mut Cx) -> Result<String, Error>

Render the object as a human-readable display string.
Source§

fn as_any(&self) -> &(dyn Any + 'static)

Expose the object for Rust downcasting.
Source§

fn header(&self) -> &ObjectHeader

Identity and trust header for the object; defaults to the shared anonymous header.
Source§

fn op(&self, _key: &OpKey) -> Option<&dyn Op>

Resolve the operation registered under key, if any.
Source§

fn claims( &self, _cx: &mut Cx, _pattern: &ClaimPattern, _sink: &mut dyn ClaimSink, ) -> Result<(), Error>

Emit the object’s claims matching pattern into sink.
Source§

fn snapshot(&self, _cx: &mut Cx) -> Result<Option<Datum>, Error>

Optional content-addressable snapshot of the object’s state.
Source§

impl<T> ObjectCompat for T
where T: Shape + Any,

Source§

fn class(&self, cx: &mut Cx) -> Result<Value, Error>

Class object this value belongs to; defaults to nil.
Source§

fn as_table(&self, cx: &mut Cx) -> Result<Value, Error>

Project the object into a table value; the default exposes its display.
Source§

fn as_shape(&self) -> Option<&dyn Shape>

Shape view, if the object is a shape.
Source§

fn as_callable(&self) -> Option<&dyn Callable>

Callable view, if the object can be invoked.
Source§

fn as_class(&self) -> Option<&dyn Class>

Class view, if the object is a class.
Source§

fn as_object_encoder(&self) -> Option<&dyn ObjectEncode>

Object-encoder view, if the object encodes other objects.
Source§

fn as_read_constructor(&self) -> Option<&dyn ReadConstructor>

Read-constructor view, if the object decodes data forms.
Source§

fn as_number_domain(&self) -> Option<&(dyn NumberDomain + 'static)>

Number-domain view, if the object is a number domain.
Source§

fn as_number_value(&self) -> Option<&dyn NumberValue>

Number-value view, if the object is a domain number.
Source§

fn as_eval_fabric(&self) -> Option<&dyn EvalFabric>

Eval-fabric view, if the object is a distributed eval surface.
Source§

fn as_stream(&self) -> Option<&dyn Stream>

Stream view, if the object is a stream.
Source§

fn as_sequence(&self) -> Option<&dyn Sequence>

Sequence view, if the object is a sequence.
Source§

fn as_thunk(&self) -> Option<&dyn Thunk>

Thunk view, if the object is a deferred computation.
Source§

fn as_list(&self) -> Option<&(dyn ListValue + 'static)>

List view, if the object is a list value.
Source§

fn as_table_impl(&self) -> Option<&(dyn Table + 'static)>

Table-implementation view, if the object is a table.
Source§

fn as_dir(&self) -> Option<&(dyn Dir + 'static)>

Directory view, if the object is a directory.
Source§

fn as_expr(&self, cx: &mut Cx) -> Result<Expr, Error>

Expression form of the object; defaults to an opaque extension node.
Source§

fn truth(&self, _cx: &mut Cx) -> Result<bool, Error>

Truthiness of the object; defaults to true.
Source§

fn publish_shape_satisfaction_claims( &self, _cx: &mut Cx, _shape: &Ref, ) -> Result<bool, Error>

Publish claims asserting that the object satisfies shape; returns whether any were published.
Source§

impl<T> RuntimeObject for T
where T: Object + ObjectCompat + Any + Send + Sync,

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.