3个不稳定版本
0.1.1 | 2024年6月5日 |
---|---|
0.1.0 | 2024年6月5日 |
0.0.1 | 2023年5月23日 |
0.0.0 |
|
#157 在 过程宏 中
每月 29 次下载
在 2 个crates中使用(通过 unwrap-enum-proc-macro)
18KB
为quote!提供了一个包装器,允许插值任意表达式。
期望的语法与quote!使用的语法相同,但允许一个新的插值模式。
示例
使用quote
use quote::quote;
use proc_macro2::TokenStream;
use syn::{Field, Member};
pub fn expand_getter(field: &Field) -> TokenStream {
let ident = &field.ident;
let member = Member::Named(ident.as_ref().cloned().unwrap());
let ty = &field.ty;
quote! {
pub fn #ident(&self) -> #ty {
&self.#member
}
}
}
使用quasiquote
use quasiquote::quasiquote;
use proc_macro2::TokenStream;
use syn::{Field, Member};
pub fn expand_getter(field: &Field) -> TokenStream {
let member = Member::Named(field.ident.as_ref().cloned().unwrap());
quasiquote! {
pub fn #{&field.ident}(&self) -> #{&field.ty} {
&self.#member
}
}
}
尚未实现
- 重复中表达式内部的插值
依赖关系
~505KB