pub struct Template<'a> { /* private fields */ }Expand description
Class to hold hidden data about template
Implementations§
Source§impl<'a> Template<'a>
Class implementation
impl<'a> Template<'a>
Class implementation
Sourcepub fn new(expanded: &'a str) -> Self
pub fn new(expanded: &'a str) -> Self
Create a new template using a string containing ${..} variables Note: will only dereference 16 nested levels of variables Simple default value;
§Example
use stemplate::Template;
Template::new("My name is ${name}");§Example
use stemplate::Template;
// Simple default value (variable not supplied in template or is empty";
Template::new("My name is ${name:-Fred}");§Example
use stemplate::Template;
// Nested variables where fullname = "${first:=Fred} ${last:=Bloggs}"
Template::new("My name is ${fullname}");Sourcepub fn new_delimit(expanded: &'a str, sdlim: &'a str, edlim: &'a str) -> Self
pub fn new_delimit(expanded: &'a str, sdlim: &'a str, edlim: &'a str) -> Self
Create a new template as above but choose different delimiters
§Example
use stemplate::Template; Template::new_delimit(“My name is {%name%}”, “{%”, “%}”);
Sourcepub fn render<V: AsRef<str> + Debug + ToString>(
&self,
vars: &HashMap<&str, V>,
) -> String
pub fn render<V: AsRef<str> + Debug + ToString>( &self, vars: &HashMap<&str, V>, ) -> String
Render a template.
§Example
use std::collections::HashMap;
use stemplate::Template;
let template = Template::new("My name is ${name}");
let mut args = HashMap::new();
args.insert("name", "Fred");
let s = template.render(&args);
assert_eq!(s, "My name is Fred");§Example
// Multi-valued example use in *<delimit>
// Delimit is optional and is newline by default
// This is useful for lists etc.
// Normally HTML markup would be included
use std::collections::HashMap;
use stemplate::Template;
let mut args = HashMap::new();
args.insert("dog", "woofers|rex|freddy");
args.insert("cat", "kitty|moggi");
args.insert("pets", "${dog} and ${cat}");
let s = Template::new("${*|pets}").render(&args);
assert_eq!(s, "woofers and kitty|rex and moggi");Sourcepub fn render_strings(&self, vars: &HashMap<String, String>) -> String
pub fn render_strings(&self, vars: &HashMap<String, String>) -> String
Render a template with string values. Convenience for use with serde hash maps.
§Example
use std::collections::HashMap;
use stemplate::Template;
let template = Template::new("My name is ${name}");
let mut args = HashMap::new();
args.insert("name", "Fred");
let s = template.render(&args);
assert_eq!(s, "My name is Fred");§Example
// Nested variables
use std::collections::HashMap;
use stemplate::Template;
let mut args = HashMap::new();
args.insert("first", "Doris");
args.insert("fullname", "${first:=Fred} ${last:=Bloggs}");
let template = Template::new("${fullname}");
let s = template.render(&args);
assert_eq!(s, "Doris Bloggs");Sourcepub fn render_env(&self) -> String
pub fn render_env(&self) -> String
Render a template from environment variables.
§Example
use stemplate::Template;
// Using Googles LLM API. GEMINI_URL contains other env variables
let url: String = Template::new_delimit("{GEMINI_URL}", "{", "}").render_env();§Example
use stemplate::Template;
let s = Template::new("File contains: ${!test.inc}").render_env();
//assert_eq!(s, "File contains: inc");Trait Implementations§
Auto Trait Implementations§
impl<'a> Freeze for Template<'a>
impl<'a> RefUnwindSafe for Template<'a>
impl<'a> Send for Template<'a>
impl<'a> Sync for Template<'a>
impl<'a> Unpin for Template<'a>
impl<'a> UnwindSafe for Template<'a>
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more