diff options
author | HampusM <hampus@hampusmat.com> | 2024-07-13 16:26:28 +0200 |
---|---|---|
committer | HampusM <hampus@hampusmat.com> | 2024-07-13 16:26:28 +0200 |
commit | ca86952c1486b7f2313fef62e6cacf36e248efd2 (patch) | |
tree | 774175aa8723328c1b0dbd3faa0e67d9106b3ba7 /macros/src/util.rs | |
parent | 20d37eb93060e51970d3791c6c173e07ef5ad489 (diff) |
refactor: move & rename all mod.rs files
Diffstat (limited to 'macros/src/util.rs')
-rw-r--r-- | macros/src/util.rs | 67 |
1 files changed, 67 insertions, 0 deletions
diff --git a/macros/src/util.rs b/macros/src/util.rs new file mode 100644 index 0000000..3557896 --- /dev/null +++ b/macros/src/util.rs @@ -0,0 +1,67 @@ +pub mod error; +pub mod item_impl; +pub mod iterator_ext; +pub mod string; +pub mod syn_ext; +pub mod syn_path; +pub mod tokens; + +macro_rules! to_option { + ($($tokens: tt)+) => { + Some($($tokens)+) + }; + + () => { + None + }; +} + +macro_rules! or { + (($($tokens: tt)+) else ($($default: tt)*)) => { + $($tokens)* + }; + + (() else ($($default: tt)*)) => { + $($default)* + }; +} + +/// Imports the specified item, prepending 'Mock' to the item identifier if the `test` +/// configuration option is set. +/// +/// # Examples +/// ```ignore +/// use_double!(crate::dependency_history::DependencyHistory); +/// ``` +/// <br> +/// +/// Expands to the following when `cfg(not(test))` +/// ```ignore +/// use crate::dependency_history::DependencyHistory; +/// ``` +/// <br> +/// +/// Expands to the following when `cfg(test)` +/// ```ignore +/// use crate::dependency_history::MockDependencyHistory as DependencyHistory; +/// ``` +macro_rules! use_double { + ($([$($part: ident),*])? $item_path_part: ident :: $($next_part: tt)+) => { + use_double!( + [$($($part,)*)? $item_path_part] + $($next_part)+ + ); + }; + + ([$($part: ident),*] $item_path_part: ident) => { + #[cfg(not(test))] + use $($part::)* $item_path_part; + + ::paste::paste! { + #[cfg(test)] + use $($part::)* [<Mock $item_path_part>] as $item_path_part; + } + }; +} + +pub(crate) use {or, to_option, use_double}; |