pub trait Scope {
// Required methods
fn lookup_apply(
&self,
id: &[u8],
inp_and_args: &[&[u8]],
init: bool,
ctx: &dyn Scope
) -> ApplyResult<Vec<u8, Global>>;
fn encode(
&self,
id: &[u8],
options: &[ABE],
bytes: &[u8]
) -> ApplyResult<String>;
// Provided methods
fn lookup_eval(
&self,
_id: &[u8],
_abe: &[ABE],
_ctx: &dyn Scope
) -> ApplyResult<Vec<u8, Global>> { ... }
fn describe(
&self,
cb: &mut dyn FnMut(&str, &str, &mut dyn Iterator<Item = ScopeFuncInfo>, &mut dyn Iterator<Item = ScopeEvalInfo>)
) { ... }
}