The format function supports substituting placeholders using the QueryParams enum:
QueryParams::Indexed(Vec<String>): For positional/numbered placeholders like ?, ?1, or $1.QueryParams::Named(Vec<(String, String)>): For named placeholders like $name, :name, @name, or bracketed variants like @`var name` `.
use sqlformat::{format, FormatOptions, QueryParams};
// Numbered / positional (e.g., ?, ?1, $1)
let sql = "SELECT ?1, ?, $2;";
let params = QueryParams::Indexed(vec!["first".to_string(), "second".to_string(), "third".to_string()]);
let out = format(sql, ¶ms, &FormatOptions::default());
// Named (e.g., $name, :name, @name, :"weird name")
let sql = "SELECT $hash, :name, @`var name`;";
let params = QueryParams::Named(vec![
("hash".to_string(), "hash value".to_string()),
("name".to_string(), "Alice".to_string()),
("var name".to_string(), "Bob".to_string()),
]);
let out = format(sql, ¶ms, &FormatOptions::default());