1 个不稳定版本
0.2.0 | 2020年11月21日 |
---|
#248 在 模板引擎
371,930 每月下载量
用于 40 个crates(直接使用4个)
32KB
551 行
rust-uritemplate
rust-uritemplate
是 RFC6570 - URI模板 的Rust实现,可以处理URI模板,包括指定为第4级的模板。它通过了 uritemplate-test 测试套件中的所有测试。
基本用法
变量设置可以链式调用,以生成整洁的代码。
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");
无法将变量设置为“未定义”的值。相反,如果已经设置了变量,只需删除它。
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
的文档以了解其工作方式。
依赖项
~2.1–3MB
~53K SLoC