use handlebars::*; use serde_json::json; struct HelperWithBorrowedData<'a>(&'a String); impl<'a> HelperDef for HelperWithBorrowedData<'a> { fn call<'_reg: '_rc, '_rc>( &self, _: &Helper<'_reg, '_rc>, _: &'_reg Handlebars, _: &Context, _: &mut RenderContext, out: &mut dyn Output, ) -> Result<(), RenderError> { out.write(self.0).map_err(RenderError::from) } } #[test] fn test_helper_with_ref_data() { let s = "hello helper".to_owned(); let the_helper = HelperWithBorrowedData(&s); let mut r = Handlebars::new(); r.register_helper("hello", Box::new(the_helper)); let s = r.render_template("Output: {{hello}}", &json!({})).unwrap(); assert_eq!(s, "Output: hello helper".to_owned()); }