rem_utils/
macros.rs

1#[macro_export]
2macro_rules! pprint_ast {
3    ( $arg:expr ) => {
4        quote::ToTokens::into_token_stream($arg).to_string()
5    };
6}
7
8#[macro_export]
9macro_rules! CHRusty_todo {
10    ( message! $message:expr, $( $args:expr ),* ) => {
11        {
12            #[cfg(debug_assertions)]
13            panic!($message, $($args)*)
14        }
15    };
16    ( recover! $else:expr,
17      justification! $justification:expr  ,
18      message! $message:expr ,  $( $args:expr ),* ) => {
19        {
20            if cfg!(debug_assertions) {
21                panic!($message, $( $args, ),*)
22            } else {
23                eprintln!($justification, $($args)*);
24                $else
25            }
26        }
27    }
28}
29
30#[macro_export]
31macro_rules! CHRusty_parse {
32    ($exp:literal as $ty:ty) => {
33        syn::parse_str::<$ty>($exp).unwrap()
34    };
35    ($exp:ident as $ty:ty) => {
36        syn::parse_str::<$ty>($exp).unwrap()
37    };
38    (($exp:expr) as $ty:ty) => {
39        syn::parse_str::<$ty>($exp).unwrap()
40    };
41}
42
43#[macro_export]
44macro_rules! CHRusty_build {
45    ($name:path { $( $field:ident: $field_value:expr ),*; default![$($default_field:ident),*] }) => {
46        {$name {
47            $( $field: $field_value ),*,
48            $( $default_field: Default::default() ),*
49        }}
50    };
51    ($name:path { $( $field:ident: $field_value:expr ),* }) => {
52        {$name {
53            $( $field: $field_value ),*
54        }}
55    }
56}