Crates.io | rust-codegen |
lib.rs | rust-codegen |
version | 0.1.1 |
source | src |
created_at | 2022-06-26 18:51:07.153394 |
updated_at | 2022-06-26 18:55:35.409063 |
description | A simple builder API for generating Rust code |
homepage | https://github.com/robertcorponoi/rust-codegen |
repository | https://github.com/robertcorponoi/rust-codegen |
max_upload_size | |
id | 613663 |
size | 105,937 |
Rust Codegen aims to help you generate Rust code programmatically with a simple builder API.
To use rust-codegen
, add the following to your Cargo.toml
file:
[dependencies]
rust-codegen
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.
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.
Scope
instance.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
.