Skip to main content

OverrideTable

Struct OverrideTable 

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

Overlay table that layers one or more tables and resolves lookups front-to-back, so earlier layers shadow later ones.

Reads (get/has/keys/entries/len) consult layers in order and take the first match, while writes (set/del/clear) target only the front (first) layer. Each layer is itself a table Value; the override holds references to them rather than copying their contents, so changes to the underlying layers are visible through the overlay. Implements the kernel Table contract along with the object-encoding and citizen contracts.

Implementations§

Source§

impl OverrideTable

Source

pub fn new(layers: Vec<Value>) -> Result<Self>

Construct an override table over layers, ordered front (shadowing) to back (shadowed).

§Errors

Returns an error if layers is empty or if any layer value is not a table.

Source

pub fn layers(&self) -> &[Value]

The layer tables, ordered front (shadowing) to back (shadowed).

Trait Implementations§

Source§

impl Citizen for OverrideTable

Source§

fn citizen_symbol() -> Symbol

The citizen’s namespace/name class symbol.
Source§

fn citizen_version() -> u32

The citizen’s encoding version.
Source§

fn citizen_arity() -> usize

Number of constructor fields (excluding the version argument).
Source§

fn citizen_fields() -> &'static [&'static str]

The citizen’s field names, in constructor order.
Source§

impl Clone for OverrideTable

Source§

fn clone(&self) -> OverrideTable

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 Object for OverrideTable

Source§

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

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

fn as_any(&self) -> &dyn Any

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 ObjectCompat for OverrideTable

Source§

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

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

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

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

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

Truthiness of the object; defaults to true.
Source§

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

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

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

Object-encoder view, if the object encodes other objects.
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_shape(&self) -> Option<&dyn Shape>

Shape view, if the object is a shape.
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_dir(&self) -> Option<&(dyn Dir + 'static)>

Directory view, if the object is a directory.
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§

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

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

impl ObjectEncode for OverrideTable

Source§

fn object_encoding(&self, cx: &mut Cx) -> Result<ObjectEncoding>

Returns the ObjectEncoding this object should be rendered as.
Source§

impl Table for OverrideTable

Source§

fn backend_symbol(&self) -> Symbol

Symbol identifying the backend representation.
Source§

fn get(&self, cx: &mut Cx, key: Symbol) -> Result<Value>

Looks up key, returning nil when absent.
Source§

fn set(&self, cx: &mut Cx, key: Symbol, value: Value) -> Result<()>

Inserts or replaces the value for key.
Source§

fn has(&self, cx: &mut Cx, key: Symbol) -> Result<bool>

Whether key is present.
Source§

fn del(&self, cx: &mut Cx, key: Symbol) -> Result<Value>

Removes key, returning its prior value or nil.
Source§

fn keys(&self, cx: &mut Cx) -> Result<Vec<Symbol>>

All keys, in backend order.
Source§

fn entries(&self, cx: &mut Cx) -> Result<Vec<(Symbol, Value)>>

All key/value pairs, in backend order.
Source§

fn len(&self, cx: &mut Cx) -> Result<usize>

Number of entries.
Source§

fn clear(&self, cx: &mut Cx) -> Result<()>

Removes all entries.
Source§

fn is_empty(&self, cx: &mut Cx) -> Result<bool, Error>

Whether the table has no entries.
Source§

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

Projects the table to an Expr::Map.
Source§

fn table_eq( &self, cx: &mut Cx, other: &(dyn Table + 'static), ) -> Result<bool, Error>

Order-insensitive equality against another table’s entries.

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