Skip to main content

prefix_whitelist/
prefix_whitelist.rs

1//! Canonical usage of `PrefixWhitelistPolicy` and `Substituter`.
2#![allow(unsafe_code)]
3
4use configbuilder_pattern_substitution::{EnvValueResolver, PrefixWhitelistPolicy, Substituter};
5
6fn main() {
7    // SAFETY: single-threaded example, no concurrent env access.
8    unsafe { std::env::set_var("APP_HOST", "example.internal") };
9
10    let policy = PrefixWhitelistPolicy::new(vec!["APP_".to_string()]);
11    let resolver = EnvValueResolver;
12    let substituter = Substituter::new(&policy, &resolver, "example.toml".to_string());
13
14    match substituter.substitute("host = {{APP_HOST}}") {
15        Ok(value) => println!("{value}"),
16        Err(e) => eprintln!("substitution failed: {e}"),
17    }
18}