#syn #meta-programming #quote

syn_builder

syn 结构体和枚举提供构建函数,以简化Rust代码的生成

2 个不稳定版本

0.2.0 2023年9月21日
0.1.0 2023年7月16日

#1753 in 过程宏

MIT/Apache

135KB
4.5K SLoC

syn_builder

syn 结构体和枚举提供构建函数,以简化Rust代码的生成。

注意:仅使用构建方法创建 syn 结构体 - 没有中间结构体来管理。

使用方法

  1. 将以下内容添加到您的 Cargo.toml 文件中
[dependencies]
syn_builder = "0.2.0"
  1. 导入构建函数并创建 syn 对象
use proc_macro2::TokenStream;
use quote::ToTokens;
use syn_builder::*;

fn main() {
    //generate code using the builder api
    let code = item_enum("my_enum").variants([
        variant("A").fields(
            fields_unamed([field(type_path("A")), field(type_path("B"))]),
        ),
        variant("B"),
        variant("C").fields(
            fields_named([
                field(type_path("A")).ident("other"),
                field(type_path("B")).ident("one"),
            ]),
        ),
    ]);

    let mut token_stream = TokenStream::new();
    code.to_tokens(&mut token_stream);

    println!("{token_stream}");
}

替代方案

  • quote - 通过编写Rust代码和使用变量插值生成 syn 结构体

依赖关系

~255–680KB
~16K SLoC