7个版本 (4个重大更新)

1.0.0-rc22019年11月23日
1.0.0-rc12019年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

CircleCI License Coverage Status

API文档

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