#[macro_export]
macro_rules! compare {
($name:expr, $path_taken:expr, || $block_1:expr, || $block_2:expr) => {
{
use $crate::timing_guard::EXPERIMENTS_METRIC_NAME;
let prima_datadog_experiment_tags = &[::std::format!("experiment_name:{}", $name), ::std::format!("path_taken:{}", $path_taken)];
let _prima_datadog_timing_guard = $crate::Datadog::enter_timing(EXPERIMENTS_METRIC_NAME, prima_datadog_experiment_tags);
if $path_taken == 0 {
$block_1
} else {
$block_2
}
}
};
($name:expr, $path_taken:expr, move || $block_1:expr, move || $block_2:expr) => {
{
use $crate::timing_guard::EXPERIMENTS_METRIC_NAME;
let prima_datadog_experiment_tags = &[::std::format!("experiment_name:{}", $name), ::std::format!("path_taken:{}", $path_taken)];
let _prima_datadog_timing_guard = $crate::Datadog::enter_timing(EXPERIMENTS_METRIC_NAME, prima_datadog_experiment_tags);
if $path_taken == 0 {
$block_1
} else {
$block_2
}
}
};
($name:expr, $path_taken:expr, || $block_1:expr, || $block_2:expr; $( $key:expr => $value:expr ), *) => {
{
use $crate::timing_guard::EXPERIMENTS_METRIC_NAME;
let prima_datadog_experiment_tags = &[::std::format!("experiment_name:{}", $name), ::std::format!("path_taken:{}", $path_taken), $(::std::format!("{}:{}", $key, $value)), *];
let _prima_datadog_timing_guard = $crate::Datadog::enter_timing(EXPERIMENTS_METRIC_NAME, prima_datadog_experiment_tags);
if $path_taken == 0 {
$block_1
} else {
$block_2
}
}
};
($name:expr, $path_taken:expr, move || $block_1:expr, move || $block_2:expr; $( $key:expr => $value:expr ), *) => {
{
use $crate::timing_guard::EXPERIMENTS_METRIC_NAME;
let prima_datadog_experiment_tags = &[::std::format!("experiment_name:{}", $name), ::std::format!("path_taken:{}", $path_taken), $(::std::format!("{}:{}", $key, $value)), *];
let _prima_datadog_timing_guard = $crate::Datadog::enter_timing(EXPERIMENTS_METRIC_NAME, prima_datadog_experiment_tags);
if $path_taken == 0 {
$block_1
} else {
$block_2
}
}
};
}