Shell-like variable substitution for strings and byte strings.
&str
or in &[u8]
."Hello $name!"
"Hello ${name}!"
"Hello ${name:person}!"
"${XDG_CONFIG_HOME:$HOME/.config}/my-app/config.toml"
yaml
feature).Variable names can consist of alphanumeric characters and underscores. They are allowed to start with numbers.
The substitute()
function can be used to perform substitution on a &str
.
The variables can either be a HashMap
or a BTreeMap
.
rust
let mut variables = HashMap::new();
variables.insert("name", "world");
assert_eq!(subst::substitute("Hello $name!", &variables)?, "Hello world!");
The variables can also be taken directly from the environment with the Env
map.
rust
assert_eq!(
subst::substitute("$XDG_CONFIG_HOME/my-app/config.toml", &subst::Env)?,
"/home/user/.config/my-app/config.toml",
);
Substitution can also be done on byte strings using the substitute_bytes()
function.
rust
let mut variables = HashMap::new();
variables.insert("name", b"world");
assert_eq!(subst::substitute_bytes(b"Hello $name!", &variables)?, b"Hello world!");