pub struct MapResolver { /* private fields */ }Expand description
A Resolver backed by maps: descriptors by function hash, receipts by receipt hash,
manifests by slice entry, and evaluated values (with lineages) by cell id. It is what the
vectors’ recompute object describes (SPEC 11): the descriptor goes under the receipt’s
cell.fn_hash, the inputs under their hashes, the manifests under their entries, and
value (and lineage) under the receipt’s own Cell::id.
A map holds one value per cell: evaluate ignores asof. A cell
with no value inserted cannot be evaluated (E_EVAL_UNAVAILABLE), as a recompute
without value means. A vector’s descriptor is a JSON value: insert its JCS bytes
(null as null, a string as its JSON serialisation); only an absent one is left out.
Implementations§
Source§impl MapResolver
impl MapResolver
Sourcepub fn new() -> MapResolver
pub fn new() -> MapResolver
An empty resolver: every descriptor and receipt unavailable, nothing evaluable.
Sourcepub fn insert_descriptor(
&mut self,
fn_hash: impl Into<String>,
json: impl Into<Vec<u8>>,
)
pub fn insert_descriptor( &mut self, fn_hash: impl Into<String>, json: impl Into<Vec<u8>>, )
Offers descriptor JSON text for fn_hash.
Sourcepub fn insert_receipt(
&mut self,
hash: impl Into<String>,
json: impl Into<Vec<u8>>,
)
pub fn insert_receipt( &mut self, hash: impl Into<String>, json: impl Into<Vec<u8>>, )
Offers receipt JSON text for receipt hash hash.
Sourcepub fn insert_value(&mut self, cell_id: impl Into<String>, value: Scalar)
pub fn insert_value(&mut self, cell_id: impl Into<String>, value: Scalar)
Sets the value evaluating the cell with id cell_id gives.
Sourcepub fn insert_manifest(
&mut self,
entry: impl Into<String>,
json: impl Into<Vec<u8>>,
)
pub fn insert_manifest( &mut self, entry: impl Into<String>, json: impl Into<Vec<u8>>, )
Offers manifest JSON text for slice entry entry.
Sourcepub fn insert_lineage<I, S>(&mut self, cell_id: impl Into<String>, lineage: I)
pub fn insert_lineage<I, S>(&mut self, cell_id: impl Into<String>, lineage: I)
Sets the lineage the evaluation of the cell with id cell_id reports with its value
(the inputs entries it read); without one, an evaluation has no lineage.
Trait Implementations§
Source§impl Clone for MapResolver
impl Clone for MapResolver
Source§impl Debug for MapResolver
impl Debug for MapResolver
Source§impl Default for MapResolver
impl Default for MapResolver
impl Eq for MapResolver
Source§impl PartialEq for MapResolver
impl PartialEq for MapResolver
Source§impl Resolver for MapResolver
impl Resolver for MapResolver
Source§fn descriptor(&self, fn_hash: &str) -> Option<Cow<'_, [u8]>>
fn descriptor(&self, fn_hash: &str) -> Option<Cow<'_, [u8]>>
fn_hash, or None if unavailable
(E_FN_UNAVAILABLE). Only None is unavailability: the text is parsed strictly
(unparseable text reports its parse code), and any other JSON value, null included,
is a descriptor offered that fails the hash check (E_FN_HASH_MISMATCH, SPEC 10.1
step 7.1).Source§fn receipt(&self, hash: &str) -> Option<Cow<'_, [u8]>>
fn receipt(&self, hash: &str) -> Option<Cow<'_, [u8]>>
hash, or None if unavailable
(E_INPUT_UNAVAILABLE).Source§fn evaluate(&self, cell: &Cell, _asof: &str) -> Option<Scalar>
fn evaluate(&self, cell: &Cell, _asof: &str) -> Option<Scalar>
cell as of asof (for stored: the value looked up as of it,
SPEC 10.1 step 7.6), or None if this resolver cannot evaluate it: no runtime for the
language, a budget exceeded, inputs the evaluator cannot obtain
(E_EVAL_UNAVAILABLE, see VerifyResult). asof is the receipt’s asof.Source§fn manifest(&self, entry: &str) -> Option<Cow<'_, [u8]>>
fn manifest(&self, entry: &str) -> Option<Cow<'_, [u8]>>
entry (slice:<slice id>:<members hash>), or None if unavailable (E_INPUT_UNAVAILABLE). The text is parsed strictly
and checked as a Manifest; one that does not hash to the entry is
E_INPUT_UNAVAILABLE, as a receipt with another hash. Provided: None.Source§fn evaluation(&self, cell: &Cell, _asof: &str) -> Option<Evaluation>
fn evaluation(&self, cell: &Cell, _asof: &str) -> Option<Evaluation>
cell as of asof, with the evaluation’s lineage when the resolver has it:
the inputs entries the evaluation read (10.1 step 7.6). verify calls this once,
in place of evaluate. When the value differs from the receipt’s,
a lineage that replaces one of the receipt’s inputs by a later version of the same cell
(whose receipt it offers through receipt), or one of its slice
entries by an item beginning slice:<the same slice id>:, makes the result
E_INPUT_SUPERSEDED instead of E_VALUE_MISMATCH. Provided: evaluate’s value, with
no lineage.