内置测试器'define'无法按预期工作



i有一个模板,其中有一个部分,如果定义了变量,该模板应呈现。但是我无法使它起作用。我的项目中有类似的东西:

use serde::Serialize;
#[derive(Default,Serialize)]
struct AStruct {
  parameter: Option<String>
}
// AStruct { parameter: None }
let a_struct_instance = AStruct {..Default::default()};
TEMPLATES.render("template.conf", &a_struct_instance) {...}
// template.conf example:
//
// {% if parameter is defined %}
//   SOMETHING TO SHOW
// {% endif %}

模板的渲染就像定义了参数一样,为什么?

参数字段不是,但是在"构建测试程序"函数中,"值"是某些(null(,而IS_SOME((返回为true。

https://github.com/keats/tera/blob/master/src/builtins/testers.rs#l36

/// Returns true if `value` is defined. Otherwise, returns false.
pub fn defined(value: Option<Value>, params: Vec<Value>) -> Result<bool> {
    number_args_allowed("defined", 0, params.len())?;
    Ok(value.is_some())
}

我做错了什么?

好吧,我的问题是测试人员的定义'或'是未定义的,如果变量已定义/undef,而不是变量的值。

最新更新