3个不稳定版本

0.1.1 2024年6月5日
0.1.0 2024年6月5日
0.0.1 2023年5月23日
0.0.0 2023年5月2日

#157过程宏

每月 29 次下载
2 个crates中使用(通过 unwrap-enum-proc-macro

GPL-3.0-or-later

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