openinfer_simulator/
macros.rs1#[macro_export]
2macro_rules! insert_executor {
3 ($exec:expr, { $($name:ident : $value:expr),* $(,)? }) => {
4 $( $exec
5 .insert_dynamic(stringify!($name), $value)
6 .unwrap_or_else(|err| {
7 panic!("insert_executor failed for {}: {}", stringify!($name), err)
8 }); )*
9 };
10}
11
12#[macro_export]
13macro_rules! fetch_executor {
14 ($exec:expr, { $($name:ident $( : $ty:ty )?),* $(,)? }) => {
15 $( $crate::fetch_executor!(@one $exec, $name $(, $ty)?); )*
16 };
17 (@one $exec:expr, $name:ident, $ty:ty) => {
18 let $name: $ty = $exec.fetch::<$ty>(stringify!($name)).unwrap_or_else(|err| {
19 panic!("fetch_executor failed for {}: {}", stringify!($name), err)
20 });
21 };
22 (@one $exec:expr, $name:ident) => {
23 let $name = $exec.fetch(stringify!($name)).unwrap_or_else(|err| {
24 panic!("fetch_executor failed for {}: {}", stringify!($name), err)
25 });
26 };
27}
28
29#[macro_export]
30macro_rules! try_insert_executor {
31 ($exec:expr, { $($name:ident : $value:expr),* $(,)? }) => {{
32 $( $exec.insert_dynamic(stringify!($name), $value)?; )*
33 Ok(())
34 }};
35}
36
37#[macro_export]
38macro_rules! try_fetch_executor {
39 ($exec:expr, { $name:ident $( : $ty:ty )? $(,)? }) => {{
40 $crate::try_fetch_executor!(@one $exec, $name $(, $ty)?)
41 }};
42 (@one $exec:expr, $name:ident, $ty:ty) => {{
43 $exec.fetch::<$ty>(stringify!($name))
44 }};
45 (@one $exec:expr, $name:ident) => {{
46 $exec.fetch(stringify!($name))
47 }};
48}