# expand_str [ExpandEnvironmentStrings](https://docs.microsoft.com/en-us/windows/win32/api/processenv/nf-processenv-expandenvironmentstringsw) emulation with more strict input checking and a way to substitute your own variable values. ## Example Add `expand_str` to your dependencies of your `Cargo.toml`: ```toml [dependencies] expand_str = "0.1" ``` And then, in your rust file: ```rust fn main() { println!("{}", expand_str::expand_string_with_env("This is what's in your PATH: %PATH%").unwrap()); } ``` If you only want string formatting, environment variable access code can be dropped, e.g.: ```toml [dependencies.expand_str] version = "0.1" default-features = false ``` (Exact feature name is `env`, but there are no other features at the moment). Formatting-only example: ```rust fn main() { let values = { let mut values = HashMap::new(); values.insert("DRINK", "cup of tea"); values.insert("FOOD", "cookies"); values }; let src = "Here is a %DRINK% and some %FOOD%."; let x = expand_string_with_values(src, |id| values.get(id)).unwrap(); println!("{}", x); } ```