5 个版本
0.2.1 | 2022 年 3 月 26 日 |
---|---|
0.2.0 | 2022 年 2 月 26 日 |
0.2.0-beta.1 | 2022 年 1 月 23 日 |
0.1.0 | 2020 年 1 月 28 日 |
#256 在 模板引擎 中
267 每月下载量
用于 wallust
32KB
668 行
FAR
查找和替换字符串模板引擎
概述
提供模板和映射后,FAR 将尝试在模板中找到所有键(由 {{
和 }}
分隔)并在映射中替换为相应的值。默认情况下,映射值通过其 Display
实现。例如
# use far::{find, Render, Errors};
# fn main() -> Result<(), Errors> {
let template = "{{specific}} are my favorite {{category}}.";
#[derive(Render)]
struct Replacements {
specific: String,
category: String,
}
let found = find(template)?;
let replacements = Replacements {
specific: "Cats".to_owned(),
category: "animal".to_owned(),
};
let s = found.replace(&replacements);
assert_eq!(s, "Cats are my favorite animal.");
# Ok(())
# }
如果由于某种原因失败,将返回一个 解释失败原因
# use far::{find, Render};
// Note the typo ----------------------------> vvvvvvvv
let template = "{{specific}} are my favorite {{catglory}}.";
#[derive(Debug, Render)]
struct Replacements {
specific: String,
category: String,
}
let errors = find::<_, Replacements>(template).unwrap_err();
assert_eq!(
format!("{}", errors),
r#"missing key "category", extraneous key "catglory""#
);
模板作者可以编写 {{{{}}
或 {{}}}}
来获取一个字面量 {{
或 }}
分别。
更多示例和奇怪边缘案例行为可以在 core/src/tests
中找到。
许可
此项目根据您的选择受以下其中之一许可
。
依赖项
~4MB
~81K SLoC