difftreelog
feat builtin downcasting
in: master
2 files changed
crates/jrsonnet-evaluator/src/function/builtin.rsdiffbeforeafterboth--- a/crates/jrsonnet-evaluator/src/function/builtin.rs
+++ b/crates/jrsonnet-evaluator/src/function/builtin.rs
@@ -1,4 +1,4 @@
-use std::borrow::Cow;
+use std::{any::Any, borrow::Cow};
use jrsonnet_gcmodule::Trace;
@@ -25,6 +25,8 @@
fn params(&self) -> &[BuiltinParam];
/// Call the builtin
fn call(&self, ctx: Context, loc: CallLocation<'_>, args: &dyn ArgsLike) -> Result<Val>;
+
+ fn as_any(&self) -> &dyn Any;
}
pub trait StaticBuiltin: Builtin + Send + Sync
@@ -76,6 +78,10 @@
.collect::<Result<Vec<Val>>>()?;
self.handler.call(&args)
}
+
+ fn as_any(&self) -> &dyn Any {
+ self
+ }
}
pub trait NativeCallbackHandler: Trace {
crates/jrsonnet-macros/src/lib.rsdiffbeforeafterboth380 let result: #result = #name(#(#pass)*);380 let result: #result = #name(#(#pass)*);381 <_ as Typed>::into_result(result)381 <_ as Typed>::into_result(result)382 }382 }383 fn as_any(&self) -> &dyn ::std::any::Any {384 self385 }383 }386 }384 };387 };385 })388 })