3 个版本
使用旧的 Rust 2015
0.1.2 | 2015年3月9日 |
---|---|
0.1.1 | 2015年2月26日 |
0.1.0 | 2015年2月26日 |
#14 in #tweet
9KB
155 行
此宏可用于使用闭包进行配置的多种构建器。宏仅重写没有路径的简单方法调用,其他表达式保持不变。它不涉及类似 builder.method()
、module::method()
或 Class::method()
的调用。类型参数按预期工作,因此您可以使用 method<T>()
,并且宏将其转换为 context.method<T>()
。
兼容库
- Rustless — Rust 的类似 REST 的 API 微框架。与 Iron 一起工作。
- jsonway — JSON 构建 DSL 和 Rust 的可配置序列化器。
- valico — JSON Schema 验证器和 JSON 强制转换器。
- 任何其他使用相同构建块模式的库。
用法
源代码
dsl!(|context, other_arg1, other_arg2, /* .. */| {
method_of_context(other_arg1);
another_method_of_context(other_arg2);
})
结果
|context, other_arg1, other_arg2, /* .. */| {
context.method_of_context(other_arg1);
context.another_method_of_context(other_arg2);
}
示例
没有 DSL:
rustless::Namespace::build("tweets", |tweets| {
tweets.get("latest", |endpoint| {
endpoint.desc("Get latest tweets");
endpoint.handle(|client, _params| {
// body omitted
})
});
tweet.post(/* omitted */);
tweet.delete(/* omitted */);
})
有 DSL:
rustless::Namespace::build("tweets", dsl!(|tweets| {
get("latest", dsl!(|endpoint| {
desc("Get latest tweets");
handle(|client, _params| {
// body omitted
})
}));
post(/* omitted */);
delete(/* omitted */);
}))