rust-codegen

Crates.iorust-codegen
lib.rsrust-codegen
version0.1.1
sourcesrc
created_at2022-06-26 18:51:07.153394
updated_at2022-06-26 18:55:35.409063
descriptionA simple builder API for generating Rust code
homepagehttps://github.com/robertcorponoi/rust-codegen
repositoryhttps://github.com/robertcorponoi/rust-codegen
max_upload_size
id613663
size105,937
Robert Corponoi (robertcorponoi)

documentation

https://docs.rs/rust-codegen/latest/rust_codegen/

README

Rust Codegen

Rust Codegen aims to help you generate Rust code programmatically with a simple builder API.

Installation

To use rust-codegen, add the following to your Cargo.toml file:

[dependencies]
rust-codegen

Usage

While usage can vary based on what you need, a basic flow is creating a Scope and then adding what you need onto it. Below is a simple example of creating a struct with a couple of fields.

use rust_codegen::Scope;

// A `Scope` is the root of the builder. Everything should be added on to it.
let mut scope = Scope::new();

// Creates a new struct named Foo that derives from `Debug` and have two fields.
scope.new_struct("Foo")
    .derive("Debug")
    .field("one", "usize")
    .field("two", "String");

// Once turned into a string, the above looks like:
// #[derive(Debug)]
// struct Foo {
//    one: usize,
//    two: String,
// }
println!("{}", scope.to_string());

Make sure to check out the documentation for all of the available features with examples.

Acknowledgements

This was originally a fork of carllerche's codegen repo with some updates. However, due to the amount of updates and the fact that I needed to publish it on crates.io for other projects, I made it its own thing.

License

MIT

Usage

  1. Create a Scope instance.
  2. Use the builder API to add elements to the scope.
  3. Call Scope::to_string() to get the generated code.

For example:

Note: You should not rely on the formatted output as it's very basic. You should instead run the generated code through rustfmt.

Commit count: 8

cargo fmt