@@ -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