macro_rules! make_forking_provider {
    ($combo_p:path, [ $a:expr, $b:expr, ]) => { ... };
    ($combo_p:path, [ $a:expr, $b:expr, $($c:expr),+, ]) => { ... };
}
Expand description

Make a forking data provider with an arbitrary number of inner providers that are known at build time.

Examples

use icu_provider_adapters::fork::ForkByKeyProvider;

// Some empty example providers:
#[derive(Default, PartialEq, Debug)]
struct Provider1;
#[derive(Default, PartialEq, Debug)]
struct Provider2;
#[derive(Default, PartialEq, Debug)]
struct Provider3;

// Combine them into one:
let forking1 = icu_provider_adapters::make_forking_provider!(
    ForkByKeyProvider::new,
    [
        Provider1::default(),
        Provider2::default(),
        Provider3::default(),
    ]
);

// This is equivalent to:
let forking2 = ForkByKeyProvider::new(
    Provider1::default(),
    ForkByKeyProvider::new(Provider2::default(), Provider3::default()),
);

assert_eq!(forking1, forking2);