Expand description
Jsonnet program state and evaluation.
§Example
let source = b"local add_one(x) = x + 1; add_one(2)";
// Implement callbacks
struct Callbacks;
impl<'p> rsjsonnet_lang::program::Callbacks<'p> for Callbacks {
fn import(
&mut self,
program: &mut rsjsonnet_lang::program::Program<'p>,
from: rsjsonnet_lang::span::SpanId,
path: &str,
) -> Result<rsjsonnet_lang::program::Thunk<'p>, rsjsonnet_lang::program::ImportError>
{
unimplemented!();
}
fn import_str(
&mut self,
program: &mut rsjsonnet_lang::program::Program<'p>,
from: rsjsonnet_lang::span::SpanId,
path: &str,
) -> Result<String, rsjsonnet_lang::program::ImportError> {
unimplemented!();
}
fn import_bin(
&mut self,
program: &mut rsjsonnet_lang::program::Program<'p>,
from: rsjsonnet_lang::span::SpanId,
path: &str,
) -> Result<Vec<u8>, rsjsonnet_lang::program::ImportError> {
unimplemented!();
}
fn trace(
&mut self,
program: &mut rsjsonnet_lang::program::Program<'p>,
message: &str,
stack: &[rsjsonnet_lang::program::EvalStackTraceItem],
) {
unimplemented!();
}
fn native_call(
&mut self,
program: &mut rsjsonnet_lang::program::Program<'p>,
name: rsjsonnet_lang::interner::InternedStr<'p>,
args: &[rsjsonnet_lang::program::Value<'p>],
) -> Result<rsjsonnet_lang::program::Value<'p>, rsjsonnet_lang::program::NativeError>
{
unimplemented!();
}
}
// Create the program state.
let arena = rsjsonnet_lang::arena::Arena::new();
let mut program = rsjsonnet_lang::program::Program::new(&arena);
let mut callbacks = Callbacks;
// Import the source.
let (span_ctx, _) = program
.span_manager_mut()
.insert_source_context(source.len());
let thunk = program
.load_source(span_ctx, source, true, "<example>")
.unwrap();
// Evaluate it.
let value = program.eval_value(&thunk, &mut callbacks).unwrap();
assert_eq!(value.as_number(), Some(3.0));Structs§
- Eval
Error - Import
Error - Error type that can be returned by
Callbacks::import,Callbacks::import_strandCallbacks::import_bin. - Native
Error - Error type that can be returned by
Callbacks::native_call. - Program
- Jsonnet program state and evaluator.
- Thunk
- A value that might not be evaluated yet.
- Value
- A fully evaluated value.
Enums§
Traits§
- Callbacks
- Trait to customize the behavior of operations during evaluation.