1234use jrsonnet_evaluator::{5 function::builtin,6 stdlib::std_format,7 typed::{Either, Either2},8 val::{equals, primitive_equals},9 IStr, NumValue, Result, Val,10};1112#[builtin]13pub fn builtin_mod(a: Either![NumValue, IStr], b: Val) -> Result<Val> {14 use Either2::*;15 Val::try_mod(16 &match a {17 A(v) => Val::Num(v),18 B(s) => Val::string(s),19 },20 &b,21 )22}2324#[builtin]25pub fn builtin_primitive_equals(x: Val, y: Val) -> Result<bool> {26 primitive_equals(&x, &y)27}2829#[builtin]30pub fn builtin_equals(a: Val, b: Val) -> Result<bool> {31 equals(&a, &b)32}3334#[builtin]35pub fn builtin_xor(x: bool, y: bool) -> bool {36 x ^ y37}3839#[builtin]40pub fn builtin_xnor(x: bool, y: bool) -> bool {41 x == y42}4344#[builtin]45pub fn builtin_format(str: IStr, vals: Val) -> Result<String> {46 std_format(&str, vals)47}