pub trait Resolver {
// Required methods
fn descriptor(&self, fn_hash: &str) -> Option<Cow<'_, [u8]>>;
fn receipt(&self, hash: &str) -> Option<Cow<'_, [u8]>>;
fn evaluate(&self, cell: &Cell, asof: &str) -> Option<Scalar>;
}Expand description
What step 7 of SPEC 10.1 obtains: the descriptor, the input receipts and the evaluated
value. This crate evaluates no functions and fetches nothing; the caller supplies a
resolver, and verify asks it only for what step 7 reaches for the receipt at hand:
descriptoronce, forcell.fn_hash(7.1);receiptonce per hash ininputs, in order, stopping at the first input that fails (7.5);evaluateonce, only after 7.1-7.5 pass (7.6).
Nothing is asked when steps 1-6 fail, and nothing about receipts below the inputs. The
descriptor and receipts are JSON text, so that 7.1 hashes the descriptor before checking
it and 7.5 reports an unparseable input as E_INPUT_INVALID, as the specification orders.
Required Methods§
Sourcefn descriptor(&self, fn_hash: &str) -> Option<Cow<'_, [u8]>>
fn descriptor(&self, fn_hash: &str) -> Option<Cow<'_, [u8]>>
The descriptor JSON text offered for fn_hash, or None if unavailable
(E_FN_UNAVAILABLE).
Sourcefn receipt(&self, hash: &str) -> Option<Cow<'_, [u8]>>
fn receipt(&self, hash: &str) -> Option<Cow<'_, [u8]>>
The receipt JSON text offered for receipt hash hash, or None if unavailable
(E_INPUT_UNAVAILABLE).
Sourcefn evaluate(&self, cell: &Cell, asof: &str) -> Option<Scalar>
fn evaluate(&self, cell: &Cell, asof: &str) -> Option<Scalar>
The value of evaluating 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.
Dyn Compatibility§
This trait is dyn compatible.
In older versions of Rust, dyn compatibility was called "object safety".