# Async Code Generator
[](https://crates.io/crates/async-codegen)
[](https://www.gnu.org/licenses/license-recommendations.html)
[](https://docs.rs/async-codegen)
[](https://github.com/rust-secure-code/safety-dance/)
A library for async code generation that imposes no ownership choices (can use borrowed or owned data) and is fully composable using generics and general-purpose structs.
### Examples
Coming soon.
## Library Design
The API is conceptually simple. Performing code generation is akin to writing a syntax tree.
### Model
Writable elements are composed from other writable elements. They are divided into two kinds:
1. `Writable` - the main trait used by the library
2. `WritableSeq` - for a sequence of writable values handled in the same way.
An example of a writable sequence would be function arguments, type variables, etc. An example of a standalone writable value would be a function body.
### Async and Errors
Every code generation-related function returns the library user's error type.
Also, the methods are `async` and must be awaited as such. This lets the library user plug in their favorite async runtime... because why not make code generation fast?
## Library
### Safety
* The library contains no unsafe code
* The library should never panic, except where documented.
### Dependency
Add this library to your Cargo.toml:
```toml
[dependencies]
async-codegen = "0.1"
```
## Licensing
Licensed under the Apache License v2.0. See the LICENSE.txt.