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);