2 个版本
0.1.1 | 2024 年 3 月 1 日 |
---|---|
0.1.0 | 2022 年 9 月 14 日 |
#67 在 模板引擎
每月下载 36 次
用于 4 个 Crates(2 个直接使用)
33KB
543 行
数据
数据
是 RFC6570 - URI 模板 的 Rust 实现,可以处理至包括指定为第 4 级的 URI 模板。它通过了 uritemplate-test 测试套件中的所有测试。
它是 rust-uritemplate 的分支。
基本用法
变量设置可以链式调用,以实现整洁的代码。
let uri = UriTemplate::new("/view/{object:1}/{/object,names}{?query*}")
.set("object", "lakes")
.set("names", &["Erie", "Superior", "Ontario"])
.set("query", &[("size", "15"), ("lang", "en")])
.build();
assert_eq!(uri, "/view/l/lakes/Erie,Superior,Ontario?size=15&lang=en");
无法将变量设置为 "undefined" 的值。相反,如果已经设置了变量,只需删除该变量即可。
let mut t = UriTemplate::new("{hello}");
t.set("hello", "Hello World!");
assert_eq!(t.build(), "Hello%20World%21");
t.delete("hello");
assert_eq!(t.build(), "");
delete
函数返回 true
表示变量存在,否则返回 false
。
支持类型
任何实现了 IntoTemplateVar
的类型都可以作为 UriTemplate
变量的值。以下是为每种变量类型提供的默认实现
- 标量值:
String
,&str
- 列表:
Vec<String>
,&[String]
,&[str]
- 关联数组:
Vec<(String, String)>
,&[(String, String)]
,&[(&str, &str)]
,&HashMap<String, String>
此外,您可以为您的自定义类型实现IntoTemplateVar
。查看IntoTemplateVar
的文档以了解其工作方式。
致谢
本软件是在H2020项目SIFIS-Home的范围内开发的,项目编号为n. 952652。
依赖项
~2.2–3MB
~53K SLoC