https://github.com/milesgranger/proffer
Code generation library for Rust
https://github.com/milesgranger/proffer
Last synced: 12 months ago
JSON representation
Code generation library for Rust
- Host: GitHub
- URL: https://github.com/milesgranger/proffer
- Owner: milesgranger
- License: unlicense
- Created: 2019-07-08T04:21:05.000Z (almost 7 years ago)
- Default Branch: master
- Last Pushed: 2019-11-23T05:27:57.000Z (over 6 years ago)
- Last Synced: 2025-06-21T09:02:44.688Z (12 months ago)
- Language: Rust
- Homepage: https://docs.rs/proffer
- Size: 103 KB
- Stars: 9
- Watchers: 3
- Forks: 1
- Open Issues: 3
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# Proffer
[](https://circleci.com/gh/milesgranger/proffer)
[](https://crates.io/crates/proffer)
[](http://unlicense.org/)
[](https://coveralls.io/github/milesgranger/proffer?branch=master)
---
[API Documentation](https://docs.rs/proffer)
Code generation for Rust
Namely useful for generating source code
from other data such as JSON
Example
-------
See the documentation for more examples
```rust
use proffer::*;
let ipl = Impl::new("That")
.add_generic(Generic::new("T").add_trait_bounds(vec!["ToString"]).to_owned())
.add_function(
Function::new("foo")
.set_is_pub(true)
.add_parameter(Parameter::new("bar1", "T"))
.add_parameter(Parameter::new("bar2", "S"))
.set_return_ty("T")
.add_generic(Generic::new("S"))
.set_body("bar")
.to_owned()
).to_owned();
let expected = r#"
impl That
where
T: ToString,
{
pub fn foo(bar1: T, bar2: S) -> T
where
S: ,
{
bar
}
}
"#;
let src_code = ipl.generate();
println!("{}", &src_code);
assert_eq!(
norm_whitespace(expected),
norm_whitespace(&src_code)
)
```