12345use std::{ffi::CStr, os::raw::c_char};67use jrsonnet_evaluator::{val::ArrValue, State, Thunk, Val};8use jrsonnet_gcmodule::Cc;910111213141516#[no_mangle]17pub unsafe extern "C" fn jsonnet_json_array_append(_vm: &State, arr: &mut Val, val: &Val) {18 match arr {19 Val::Arr(old) => {20 let mut new = Vec::new();21 for item in old.iter_lazy() {22 new.push(item);23 }2425 new.push(Thunk::evaluated(val.clone()));26 *arr = Val::Arr(ArrValue::Lazy(Cc::new(new)));27 }28 _ => panic!("should receive array"),29 }30}31323334353637383940#[no_mangle]41pub unsafe extern "C" fn jsonnet_json_object_append(42 _vm: &State,43 obj: &mut Val,44 name: *const c_char,45 val: &Val,46) {47 match obj {48 Val::Obj(old) => old49 .extend_field(CStr::from_ptr(name).to_str().unwrap().into())50 .value(val.clone()),51 _ => panic!("should receive object"),52 }53}