Files
@ 4fcb5d4646a6
Branch filter:
Location: CSY/reowolf/src/macros.rs - annotation
4fcb5d4646a6
1.2 KiB
application/rls-services+xml
WIP: Refactoring to use TypeIDs and InferIndices
75e767adaaf7 75e767adaaf7 e406c61b1158 e406c61b1158 e406c61b1158 e406c61b1158 e406c61b1158 e406c61b1158 e406c61b1158 e406c61b1158 e406c61b1158 75e767adaaf7 75e767adaaf7 75e767adaaf7 75e767adaaf7 75e767adaaf7 75e767adaaf7 75e767adaaf7 75e767adaaf7 75e767adaaf7 b3a68f0f8b36 b3a68f0f8b36 b3a68f0f8b36 b3a68f0f8b36 b3a68f0f8b36 b3a68f0f8b36 b3a68f0f8b36 b3a68f0f8b36 b3a68f0f8b36 b3a68f0f8b36 b3a68f0f8b36 b3a68f0f8b36 b3a68f0f8b36 c1b2442f23b2 | // Utility for performing debug printing within a particular module. Still
// requires some extra macros to be defined to be ergonomic.
macro_rules! enabled_debug_print {
(false, $name:literal, $format:literal) => {};
(false, $name:literal, $format:literal, $($args:expr),*) => {};
(true, $name:literal, $format:literal) => {
println!("[{}] {}", $name, $format)
};
(true, $name:literal, $format:literal, $($args:expr),*) => {
println!("[{}] {}", $name, format!($format, $($args),*))
};
}
// Utility for inserting code only executed in debug mode. Because writing the
// conditional cfg is tedious and looks ugly. Still doesn't work for struct
// fields, though.
macro_rules! dbg_code {
($code:stmt) => {
#[cfg(debug_assertions)] $code
}
}
// Given a function name, return type and variant, will generate the all-so
// common `union_value.as_variant()` method.
macro_rules! union_cast_method_impl {
($func_name:ident, $ret_type:ty, $variant:path) => {
fn $func_name(&self) -> &$ret_type {
match self {
$variant(content) => return content,
_ => unreachable!(),
}
}
}
}
|