Rust में Go html/template शैली का रेंडरिंग

go_html_template एक Rust crate है जो Go html/template के मुख्य वर्कफ़्लो को प्रतिबिंबित करता है। यह template syntax, pipelines, context-aware escaping और unsafe URL scheme blocking का समर्थन करता है, और साथ ही परिचित API रूप बनाए रखता है।

Go-शैली Template API

Template::new(...).parse(...).execute(...) का उपयोग define/template/range/with/pipeline सुविधाओं के साथ करें।

संदर्भ-सचेत एस्केपिंग

HTML text, attributes, URL attributes और script/style contexts के लिए context-aware escaping लागू करता है, और असुरक्षित javascript: URLs को ब्लॉक करता है।

web-rust मोड

web-rust feature के साथ parse_files/parse_glob/parse_fs अक्षम हो जाते हैं, जिससे केवल in-memory template loading लागू की जा सकती है।

सेटअप और बुनियादी उपयोग

crate जोड़ें, फिर एक न्यूनतम parse + execute_to_string flow की पुष्टि करें। web-rust environments में file-loading APIs के बजाय in-memory template strings का उपयोग करें।

इंस्टॉल करें

cargo add go_html_template

Rust उदाहरण

src/main.rs
use go_html_template::{Template, Value};

fn main() -> Result<(), Box<dyn std::error::Error>> {
  let tpl = Template::new("page")
    .parse(r#"<h1>{{.Title}}</h1>\n<p>{{.Body | safe_html}}</p>"#)?;

  let out = tpl.execute_to_string(&serde_json::json!({
    "Title": "go_html_template",
    "Body": "<em>trusted</em>"
  }))?;

  println!("{out}");
  Ok(())
}
संगतता स्थिति

go_html_template वर्तमान में मुख्य वर्कफ़्लो लागू करता है और संगतता की खाइयों को लगातार कम कर रहा है । यह अभी तक Go html/template के साथ सख्त 1:1 संगतता का लक्ष्य नहीं है, इसलिए अपने production templates में व्यवहार की पुष्टि करें।