11 个版本

0.3.3 2024 年 6 月 29 日
0.3.2 2024 年 6 月 25 日
0.3.0 2023 年 8 月 31 日
0.2.3 2023 年 7 月 26 日
0.0.1-保留2022 年 2 月 22 日

#18模板引擎

Download history 12790/week @ 2024-04-26 10099/week @ 2024-05-03 14437/week @ 2024-05-10 13275/week @ 2024-05-17 13301/week @ 2024-05-24 12109/week @ 2024-05-31 11957/week @ 2024-06-07 12328/week @ 2024-06-14 14008/week @ 2024-06-21 13994/week @ 2024-06-28 15329/week @ 2024-07-05 13811/week @ 2024-07-12 13972/week @ 2024-07-19 13362/week @ 2024-07-26 16223/week @ 2024-08-02 17464/week @ 2024-08-09

63,210 每月下载量
10 Crates 中使用 (6 直接)

BSD-2-Clause OR Apache-2.0

78KB
1.5K SLoC

subst

字符串和字节字符串的类似壳变量替换。

功能

  • &str 或在 &[u8] 中执行替换。
  • 提供自定义变量映射或使用环境变量。
  • 短格式:"Hello $name!"
  • 长格式:"Hello ${name}!"
  • 默认值:"Hello ${name:person}!"
  • 在默认值中递归替换:"${XDG_CONFIG_HOME:$HOME/.config}/my-app/config.toml"
  • 在 TOML 或 YAML 数据中的所有字符串值上执行替换(可选,需要 tomlyaml 功能)。

变量名可以由字母数字字符和下划线组成。它们可以以数字开头。

如果您想快速对字符串执行替换,请使用 substitute()substitute_bytes()

也可以使用模板类型之一。模板会一次性解析源字符串或字节,并且可以根据需要扩展多次。有四种不同的模板类型可供选择

示例

可以使用 [substitute()][substitute] 函数对 &str 进行替换。变量可以是 HashMapBTreeMap

let mut variables = HashMap::new();
variables.insert("name", "world");
assert_eq!(subst::substitute("Hello $name!", &variables)?, "Hello world!");

变量也可以使用 Env 映射直接从环境中获取。

assert_eq!(
  subst::substitute("$XDG_CONFIG_HOME/my-app/config.toml", &subst::Env)?,
  "/home/user/.config/my-app/config.toml",
);

还可以使用 [substitute_bytes()][substitute_bytes] 函数对字节字符串进行替换。

let mut variables = HashMap::new();
variables.insert("name", b"world");
assert_eq!(subst::substitute_bytes(b"Hello $name!", &variables)?, b"Hello world!");

您还可以一次性解析模板并多次扩展它

let mut variables = HashMap::new();
let template = subst::Template::from_str("Welcome to our hair salon, $name!")?;
for name in ["Scrappy", "Coco"] {
  variables.insert("name", name);
  let message = template.expand(&variables)?;
  println!("{}", message);
}

依赖项

~0.4–1.2MB
~17K SLoC