git.delta.rocks / jrsonnet / refs/commits / 76b0db1d8913

difftreelog

feat builtin downcasting

Yaroslav Bolyukin2023-02-16parent: #5acdbdb.patch.diff
in: master

2 files changed

modifiedcrates/jrsonnet-evaluator/src/function/builtin.rsdiffbeforeafterboth
1use std::borrow::Cow;1use std::{any::Any, borrow::Cow};
22
3use jrsonnet_gcmodule::Trace;3use jrsonnet_gcmodule::Trace;
44
26 /// Call the builtin26 /// Call the builtin
27 fn call(&self, ctx: Context, loc: CallLocation<'_>, args: &dyn ArgsLike) -> Result<Val>;27 fn call(&self, ctx: Context, loc: CallLocation<'_>, args: &dyn ArgsLike) -> Result<Val>;
28
29 fn as_any(&self) -> &dyn Any;
28}30}
2931
30pub trait StaticBuiltin: Builtin + Send + Sync32pub trait StaticBuiltin: Builtin + Send + Sync
77 self.handler.call(&args)79 self.handler.call(&args)
78 }80 }
81
82 fn as_any(&self) -> &dyn Any {
83 self
84 }
79}85}
8086
81pub trait NativeCallbackHandler: Trace {87pub trait NativeCallbackHandler: Trace {
modifiedcrates/jrsonnet-macros/src/lib.rsdiffbeforeafterboth
--- a/crates/jrsonnet-macros/src/lib.rs
+++ b/crates/jrsonnet-macros/src/lib.rs
@@ -380,6 +380,9 @@
 					let result: #result = #name(#(#pass)*);
 					<_ as Typed>::into_result(result)
 				}
+				fn as_any(&self) -> &dyn ::std::any::Any {
+					self
+				}
 			}
 		};
 	})