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}