[英]How to save handlebar registry for future use
我正在使用handlebars模板引擎。 handlebar 注冊表像往常一樣初始化:
let mut registry = Handlebars::new();
我想將此把手注冊表保存為結構的成員以供將來使用:
struct AppState {
pool: Pool,
registry : handlebars::registry::Registry,
}
但是handlebars::registry
模塊是私有的,所以我不能那樣做。 我應該怎么辦?
更新:
我嘗試使用結構名稱Handlebar
:
struct AppState {
pool: Pool,
registry: Handlebars,
}
但是編譯器說:
缺少生命周期說明符
預期的命名生命周期參數
由於我對 rust 中的生命周期語義還很陌生,因此以下修改失敗(編譯器仍然說“缺少生命周期說明符/預期的命名生命周期參數”):
struct AppState<'a> {
pool: Pool,
registry: &'a Handlebars,
}
但是 handlebars::registry 模塊是私有的,所以我不能那樣做。 我應該怎么辦?
Registry 的公共別名是Handlebars
。 你會在lib.rs
中找到如下語句
pub use self::registry::{html_escape, no_escape, EscapeFn, Registry as Handlebars};
另一方面, Handlebars
需要生命周期參數,您可以按以下方式使用它:
use handlebars::Handlebars;
struct AppState<'a> {
registry: Handlebars<'a>,
}
fn main() {
let mut registry = Handlebars::new();
let app = AppState { registry };
}
如果您想要一個static
引用,它將在運行程序的整個生命周期內保留。 將<'a>
替換為<'static>
並且您不應為結構指定生命周期參數名稱,如下所示:
use handlebars::Handlebars;
struct AppState {
registry: Handlebars<'static>,
}
fn main() {
let mut registry = Handlebars::new();
let app = AppState { registry };
}
只需指定'static
:
struct AppState {
pool: Pool,
registry: handlebars::Handlebars<'static>,
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.