7个版本 (4个重大更新)
1.0.0-rc2 | 2019年11月23日 |
---|---|
1.0.0-rc1 | 2019年11月9日 |
0.5.0 | 2019年10月27日 |
0.4.0 | 2019年10月7日 |
0.1.0 | 2019年9月29日 |
#49 in #代码
47KB
1K SLoC
Proffer
Rust代码生成
主要用于从其他数据(如JSON)生成源代码
示例
更多示例请参阅文档
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<T> That<T>
where
T: ToString,
{
pub fn foo<S>(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)
)
依赖关系
~10–13MB
~277K SLoC