Skip to content

Commit 7f0bfda

Browse files
committed
add debug implementations for all macros
1 parent e249fd2 commit 7f0bfda

File tree

1 file changed

+61
-0
lines changed

1 file changed

+61
-0
lines changed

approx/src/macros.rs

Lines changed: 61 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -183,3 +183,64 @@ macro_rules! assert_ulps_ne {
183183
__assert_approx!(ulps_ne, $given, $expected $(, $opt = $val)*)
184184
};
185185
}
186+
187+
macro_rules! make_debug (
188+
($new_name:ident, $macro_name:ident) => {make_debug!($new_name, $macro_name, $);};
189+
($new_name:ident, $macro_name:ident, $dol:tt) => {
190+
/// Debug version of [`
191+
#[doc = stringify!($macro_name)]
192+
/// `].
193+
///
194+
/// This macro is only active when the `cfg!(debug_assertions)` criterion is met.
195+
/// This is usually the case when libraries are compiled in debug or release mode.
196+
/// This macro will return `true` when `cfg!(debug_assertions)` is not active.
197+
///
198+
/// ```text
199+
/// if cfg!(debug_assertions) {
200+
/// // .. run macro
201+
/// } else {
202+
/// true
203+
/// }
204+
/// ```
205+
#[macro_export]
206+
macro_rules! $new_name {
207+
($dol($to:tt)*) => {if cfg!(debug_assertions) {$macro_name!($dol($to)*)} else {true}}
208+
}
209+
};
210+
(@assert $new_name:ident, $macro_name:ident) => {make_debug!(@assert $new_name, $macro_name, $);};
211+
(@assert $new_name:ident, $macro_name:ident, $dol:tt) => {
212+
/// Debug version of [`
213+
#[doc = stringify!($macro_name)]
214+
/// `]
215+
///
216+
/// This macro is only active when the `cfg!(debug_assertions)` criterion is met.
217+
/// This is usually the case when libraries are compiled in debug or release mode.
218+
/// This macro never panic when `cfg!(debug_assertions)` is not active.
219+
///
220+
/// ```text
221+
/// if cfg!(debug_assertions) {
222+
/// // .. run macro with assertion
223+
/// }
224+
/// ```
225+
#[macro_export]
226+
macro_rules! $new_name {
227+
($dol($to:tt)*) => {if cfg!(debug_assertions) {$macro_name!($dol($to)*)}}
228+
}
229+
230+
};
231+
);
232+
233+
make_debug!(debug_abs_diff_eq, abs_diff_eq);
234+
make_debug!(debug_abs_diff_ne, abs_diff_ne);
235+
make_debug!(@assert debug_assert_abs_diff_eq, assert_abs_diff_eq);
236+
make_debug!(@assert debug_assert_abs_diff_ne, assert_abs_diff_ne);
237+
238+
make_debug!(debug_relative_eq, relative_eq);
239+
make_debug!(debug_relative_ne, relative_ne);
240+
make_debug!(@assert debug_assert_relative_eq, assert_relative_eq);
241+
make_debug!(@assert debug_assert_relative_ne, assert_relative_ne);
242+
243+
make_debug!(debug_ulps_eq, ulps_eq);
244+
make_debug!(debug_ulps_ne, ulps_ne);
245+
make_debug!(@assert debug_assert_ulps_eq, assert_ulps_eq);
246+
make_debug!(@assert debug_assert_ulps_ne, assert_ulps_ne);

0 commit comments

Comments
 (0)