🚙
【Rust】フォーマット文字列に変数を設定したい
概要
RustではRust の文字列フォーマット回り(改訂版)の記事にある通り、設定したフォーマット文字列に対して、変数を埋め込んで出力ができます。ただ、元のフォーマット文字列を変数で以下のように設定しようとすると、コンパイルエラーとなります。
let base_url = "http://sample.com/search?key={key}&page={page}";
let url = format!(base_url, key = "sample_key", page = 1);
今回はフォーマット文字列に変数を設定したい場合、どうすれば良いかメモ書きします。
対応
println! error: expected a literal / format argument must be a string literalのstackoverflowの記事にある通り、フォーマット文字列に対してマクロを設定すれば大丈夫そうです。
実装サンプル
macro_rules! base_url {() => ("http://sample.com/search?key={key}&page={page}")}
let url = format!(base_url!(), key = "sample_key", page = 1);
Discussion