pub struct VariantConstructor { /* private fields */ }Expand description
A callable builder for one ADT variant.
Calling a constructor checks each argument against the variant’s field
Shapes and produces a TaggedValue. It is also a runtime Object
(callable, table-reflectable) so it can be installed as a value.
Implementations§
Source§impl VariantConstructor
impl VariantConstructor
Sourcepub fn new(adt: Symbol, variant: VariantDeclaration) -> Self
pub fn new(adt: Symbol, variant: VariantDeclaration) -> Self
Builds a constructor for variant within ADT adt.
Sourcepub fn fields(&self) -> &[PatternField]
pub fn fields(&self) -> &[PatternField]
Returns the variant fields in declaration order.
Sourcepub fn variant_shape(&self) -> VariantShape
pub fn variant_shape(&self) -> VariantShape
Returns the kernel VariantShape that matches this variant.
Trait Implementations§
Source§impl Callable for VariantConstructor
impl Callable for VariantConstructor
Source§fn call(&self, cx: &mut Cx, args: Args) -> Result<Value>
fn call(&self, cx: &mut Cx, args: Args) -> Result<Value>
Invoke the callable with already-evaluated, checked
Args.Source§fn browse_args_shape(&self, _cx: &mut Cx) -> Result<Option<Value>, Error>
fn browse_args_shape(&self, _cx: &mut Cx) -> Result<Option<Value>, Error>
Optional shape describing the accepted argument list, for browsing.
Source§impl Clone for VariantConstructor
impl Clone for VariantConstructor
Source§fn clone(&self) -> VariantConstructor
fn clone(&self) -> VariantConstructor
Returns a duplicate of the value. Read more
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
Performs copy-assignment from
source. Read moreSource§impl Object for VariantConstructor
impl Object for VariantConstructor
Source§fn display(&self, _cx: &mut Cx) -> Result<String>
fn display(&self, _cx: &mut Cx) -> Result<String>
Render the object as a human-readable display string.
Source§fn header(&self) -> &ObjectHeader
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>
fn op(&self, _key: &OpKey) -> Option<&dyn Op>
Resolve the operation registered under
key, if any.Source§impl ObjectCompat for VariantConstructor
impl ObjectCompat for VariantConstructor
Source§fn as_callable(&self) -> Option<&dyn Callable>
fn as_callable(&self) -> Option<&dyn Callable>
Callable view, if the object can be invoked.
Source§fn as_table(&self, cx: &mut Cx) -> Result<Value>
fn as_table(&self, cx: &mut Cx) -> Result<Value>
Project the object into a table value; the default exposes its display.
Source§fn class(&self, cx: &mut Cx) -> Result<Value, Error>
fn class(&self, cx: &mut Cx) -> Result<Value, Error>
Class object this value belongs to; defaults to nil.
Source§fn as_object_encoder(&self) -> Option<&dyn ObjectEncode>
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>
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)>
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>
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>
fn as_eval_fabric(&self) -> Option<&dyn EvalFabric>
Eval-fabric view, if the object is a distributed eval surface.
Source§fn as_sequence(&self) -> Option<&dyn Sequence>
fn as_sequence(&self) -> Option<&dyn Sequence>
Sequence view, if the object is a sequence.
Source§fn as_list(&self) -> Option<&(dyn ListValue + 'static)>
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)>
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)>
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>
fn as_expr(&self, cx: &mut Cx) -> Result<Expr, Error>
Expression form of the object; defaults to an opaque extension node.
Auto Trait Implementations§
impl !RefUnwindSafe for VariantConstructor
impl !UnwindSafe for VariantConstructor
impl Freeze for VariantConstructor
impl Send for VariantConstructor
impl Sync for VariantConstructor
impl Unpin for VariantConstructor
impl UnsafeUnpin for VariantConstructor
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
Mutably borrows from an owned value. Read more