How can I use a dynamic format string with the format! macro?

Short answer: it cannot be done.

Long answer: the format! macro (and its derivatives) requires a string literal, that is a string known at compilation-time. In exchange for this requirement, if the arguments provided do not match the format, a compilation error is raised.

What you are looking for is known as a template engine. A non-exhaustive list of Rust template engines in no particular order:

Template engines have different characteristics, and notably differ by the degree of validation occurring at compile-time or run-time and their flexibility (I seem to recall that Maud was very HTML-centric, for example). It’s up to you to find the one most fitting for your use case.

Leave a Comment