# 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);
}
```