plux_rs/function/
macros.rs1#[macro_export]
2macro_rules! function_call {
3 ($function: ident, $($args:expr), +) => {
4 $function.call(&[$($args.into()), +])
5 };
6 ($function: ident) => {
7 $function.call(&[])
8 };
9}
10
11#[test]
12fn run() {
13 use crate::{
14 function::{Arg, DynamicFunction, Function, FunctionOutput},
15 variable::VariableType,
16 };
17
18 let func = DynamicFunction::new(
20 "add",
21 vec![
22 Arg::new("a", VariableType::I32),
23 Arg::new("b", VariableType::I32),
24 ],
25 Some(Arg::new("c", VariableType::I32)),
26 |args| -> FunctionOutput {
27 let a = args[0].parse_ref::<i32>();
28 let b = args[1].parse_ref::<i32>();
29
30 let c = a + b;
31
32 println!("{} + {} = {}", a, b, c);
33
34 Ok(Some(c.into()))
35 },
36 );
37
38 let c = function_call!(func, 1, 2);
40
41 assert!(c.is_ok());
42 assert_eq!(c.unwrap(), Some(3.into()));
43}