簡體   English   中英

如何保存車把注冊表以備將來使用

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM