syn_builder

Crates.iosyn_builder
lib.rssyn_builder
version0.2.0
sourcesrc
created_at2023-07-16 13:17:56.706181
updated_at2023-09-21 21:40:52.837318
descriptionBuilder functions for `syn` structures and enums to ease the generation of Rust code.
homepage
repositoryhttps://github.com/andrewlowndes/syn_builder
max_upload_size
id917756
size138,449
Andrew Lowndes (andrewlowndes)

documentation

README

Syn builder

Builder functions for syn structures and enums to ease the generation of Rust code.

Note: only syn structures are creating using the builder methods - there no intermediate structs to manage.

Usage

  1. Add to your Cargo.toml file
[dependencies]
syn_builder = "0.2.0"
  1. Import builder functions and create syn objects
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}");
}

Alternatives

  • quote - generate syn structs by writing Rust code and using variable interpolation
Commit count: 2

cargo fmt