macro_rules! define_config_registry {
($vis:vis static $name:ident = [$($definition:expr),* $(,)?];) => { ... };
}Expand description
Builds a static ConfigRegistry from a list of ConfigDefinition items.
Product crates normally wrap this macro in their own module that names
product-specific keys and default functions. Keeping registration declarative
makes it easier for services to hand the same registry to default
initialization, validation, OpenAPI presentation, and admin UI metadata.
Duplicate and empty keys in the static list are rejected at compile time.
use aster_forge_config::ConfigDefinition;
const FIRST: ConfigDefinition = ConfigDefinition {
key: "first",
..ConfigDefinition::private_system()
};
const SECOND: ConfigDefinition = ConfigDefinition { key: "second", ..FIRST };
aster_forge_config::define_config_registry! {
static REGISTRY = [FIRST, SECOND];
}
aster_forge_config::define_config_registry! {
static EMPTY_REGISTRY = [];
}
assert!(REGISTRY.contains_key("second"));
assert!(EMPTY_REGISTRY.validate_unique_keys().is_ok());ⓘ
use aster_forge_config::ConfigDefinition;
const DEFINITION: ConfigDefinition = ConfigDefinition {
key: "duplicate",
..ConfigDefinition::private_system()
};
aster_forge_config::define_config_registry! {
static REGISTRY = [DEFINITION, DEFINITION];
}ⓘ
use aster_forge_config::ConfigDefinition;
const DEFINITION: ConfigDefinition = ConfigDefinition {
key: "",
..ConfigDefinition::private_system()
};
aster_forge_config::define_config_registry! {
static REGISTRY = [DEFINITION];
}