macro_rules! multiversion_test {
(
use {$($($path:ident::)+*),*};
#[test]
$(#[$m:meta])* $v:vis fn multiversion() $body:block
) => { ... };
(
use {$($($path:ident::)+*),*};
{ $($tail:tt)+ }
) => { ... };
(@expr $e:expr) => { ... };
}
Expand description
Helper for testing and benchmarking multiversion!
library functions.
The first rule is for testing and creates individual
#[test]
functions for each
implementation.
The second rule is more general, duplicating the same expression for each implementation and is useful for benchmarking.
#[target_feature(...)]
isn’t applied to the test code as the feature-specific code should
be elsewhere, inside a multiversion!
macro.