use crateSubstitutionError;
/// Policy for controlling which environment variables may be substituted into config values.
///
/// Implementations decide whether a variable name is allowed. The loader calls
/// `validate` on every `{{VAR_NAME}}` placeholder before substituting it;
/// rejection returns a config I/O error to the caller.
///
/// Built-in implementations: [`PrefixWhitelistPolicy`], [`PatternWhitelistPolicy`],
/// [`CompositePolicy`]. For tests only: `AllowAllPolicy` (requires the
/// `test-utils` feature). Implement this trait when the built-ins do not match
/// your security requirements.
///
/// [`PrefixWhitelistPolicy`]: crate::PrefixWhitelistPolicy
/// [`PatternWhitelistPolicy`]: crate::PatternWhitelistPolicy
/// [`CompositePolicy`]: crate::CompositePolicy