1 个不稳定版本
使用旧的Rust 2015
0.4.0 | 2017年10月28日 |
---|
#4 在 #futures-await 中
212 每月下载量
用于 3 crate
21KB
528 行
futures-await-quote
此crate是dtolnay/quote的临时分支。quote存储库尚未准备好发布,但我们希望发布futures-await crate。这是一个仅为futures-await crate维护的临时分支,一旦quote发布到上游,它将不再维护。
许可
以下任一许可下提供
- Apache License,版本2.0 (LICENSE-APACHE 或 http://www.apache.org/licenses/LICENSE-2.0)
- MIT许可 (LICENSE-MIT 或 http://opensource.org/licenses/MIT)
任选其一。
lib.rs
:
无需Syntex依赖的准引用,旨在与宏1.1一起使用。
[dependencies]
quote = "0.3"
#[macro_use]
extern crate quote;
使用#var
进行插值
let tokens = quote! {
struct SerializeWith #generics #where_clause {
value: &'a #field_ty,
phantom: ::std::marker::PhantomData<#item_ty>,
}
impl #generics serde::Serialize for SerializeWith #generics #where_clause {
fn serialize<S>(&self, s: &mut S) -> Result<(), S::Error>
where S: serde::Serializer
{
#path(self.value, s)
}
}
SerializeWith {
value: #value,
phantom: ::std::marker::PhantomData::<#item_ty>,
}
};
重复使用#(...)*
或#(...),*
实现,与macro_rules!
非常相似
#(#var)*
- 无分隔符#(#var),*
- 星号前的字符用作分隔符#( struct var; )*
- 重复可以包含其他内容#( #k => println!("{}", #v), )*
- 支持多个插值
quote!
的返回类型是 quote::Tokens
。标记可以插入到其他引用中
let t = quote! { /* ... */ };
return quote! { /* ... */ #t /* ... */ };
在 Tokens 上调用 to_string()
或 as_str()
,可以得到 Rust 代码的 String
或 &str
。
quote!
宏依赖于深层递归,因此在编译时,一些大型调用可能会因“达到递归限制”而失败。如果失败,请通过将 #![recursion_limit = "128"]
添加到您的 crate 中来提高递归限制。对于特别大的调用,可能需要更高的限制。
依赖项
~220KB