Escape a Dollar Sign
A short guide on how to get a literal dollar sign ($) in your final string.
The dollar sign $
is special in envfmt
. It tells the formatter to look for a
variable. But what if you need an actual dollar sign in your output, like for
showing gas fees in USD?
The fix is simple: just use a double dollar sign, $$
. When envfmt
sees $$
,
it replaces it with a single $
.
Example: Showing Gas Fees
Let’s say you want to create a string like Estimated gas fee: $5
. If you write
$5
, envfmt
will think you’re trying to expand a variable named 5
, which
isn’t a valid name.
Here’s how you do it correctly:
fn main() {
let template = "Estimated gas fee: $$5 in USD.";
let message = envfmt::format(template).unwrap();
println!("{}", message);
}
When you run this, the output will be exactly what you want:
Estimated gas fee: $5 in USD.
This works for both envfmt::format()
and envfmt::format_with()
. The parser
is simple, it just looks for a $
and then checks the next character. If it’s
another $
, it outputs one and moves on.
You can mix escaped dollar signs and variables in the same string too.
use std::collections::HashMap;
fn main() {
let mut context = HashMap::new();
context.insert("NETWORK", "mainnet");
let template = "Gas on $NETWORK can be $$5 or more.";
let message = envfmt::format_with(template, &context).unwrap();
println!("{}", message);
}
Running this will produce:
Gas on mainnet can be $5 or more.