Enum jrsonnet_evaluator::function::FuncVal
source · pub enum FuncVal {
Id,
Normal(Cc<FuncDesc>),
StaticBuiltin(&'static dyn StaticBuiltin),
Builtin(Cc<TraceBox<dyn Builtin>>),
}
Expand description
Represents a Jsonnet function value, including plain functions and user-provided builtins.
Variants§
Id
Identity function, kept this way for comparsions.
Normal(Cc<FuncDesc>)
Plain function implemented in jsonnet.
StaticBuiltin(&'static dyn StaticBuiltin)
Standard library function.
Builtin(Cc<TraceBox<dyn Builtin>>)
User-provided function.
Implementations§
source§impl FuncVal
impl FuncVal
pub fn builtin(builtin: impl Builtin) -> Self
sourcepub fn params_len(&self) -> usize
pub fn params_len(&self) -> usize
Amount of non-default required arguments
sourcepub fn evaluate(
&self,
call_ctx: Context,
loc: CallLocation<'_>,
args: &dyn ArgsLike,
tailstrict: bool
) -> Result<Val>
pub fn evaluate(
&self,
call_ctx: Context,
loc: CallLocation<'_>,
args: &dyn ArgsLike,
tailstrict: bool
) -> Result<Val>
Call function using arguments evaluated in specified call_ctx
Context
.
If tailstrict
is specified - then arguments will be evaluated before being passed to function body.
pub fn evaluate_simple<A: ArgsLike + OptionalContext>(
&self,
args: &A
) -> Result<Val>
sourcepub fn into_native<D: NativeDesc>(self) -> D::Value
pub fn into_native<D: NativeDesc>(self) -> D::Value
Convert jsonnet function to plain Fn
value.
sourcepub fn is_identity(&self) -> bool
pub fn is_identity(&self) -> bool
Is this function an indentity function.
Currently only works for builtin std.id
, aka Self::Id
value, and function(x) x
.
This function should only be used for optimization, not for the conditional logic, i.e code should work with syntetic identity function too