/// Automatically generates the qualified name of a benchmark given its function name and module1/// path.2///3/// This macro takes a single string literal as input and returns a [`&'static str`](str). Its4/// result is determined at compile-time. If you need to create variations of a benchmark name5/// based on its input, use this in combination with [`BenchmarkId`](criterion::BenchmarkId).6///7/// # When to use this8///9/// Use this macro to name benchmarks that are not within a group and benchmark groups themselves.10/// You'll most commonly use this macro with:11///12/// - [`Criterion::bench_function()`](criterion::Criterion::bench_function)13/// - [`Criterion::bench_with_input()`](criterion::Criterion::bench_with_input)14/// - [`Criterion::benchmark_group()`](criterion::Criterion::benchmark_group)15///16/// You do not want to use this macro with17/// [`BenchmarkGroup::bench_function()`](criterion::BenchmarkGroup::bench_function) or18/// [`BenchmarkGroup::bench_with_input()`](criterion::BenchmarkGroup::bench_with_input), because19/// the group they are in already has the qualified path in it.20///21/// # Example22///23/// ```24/// mod ecs {25/// mod query {26/// use criterion::Criterion;27/// use benches::bench;28///29/// fn iter(c: &mut Criterion) {30/// // Benchmark name ends in `ecs::query::iter`.31/// c.bench_function(bench!("iter"), |b| {32/// // ...33/// });34/// }35/// }36/// }37/// ```38#[macro_export]39macro_rules! bench {40($name:literal) => {41concat!(module_path!(), "::", $name)42};43}444546