5 个版本

使用旧的 Rust 2015

0.2.2 2017年10月3日
0.2.1 2017年10月3日
0.2.0 2017年9月23日
0.1.1 2017年8月13日
0.1.0 2017年6月25日
Download history 26/week @ 2023-10-29 21/week @ 2023-11-05 24/week @ 2023-11-12 25/week @ 2023-11-19 38/week @ 2023-11-26 34/week @ 2023-12-03 15/week @ 2023-12-10 25/week @ 2023-12-17 31/week @ 2023-12-24 15/week @ 2023-12-31 15/week @ 2024-01-07 22/week @ 2024-01-14 20/week @ 2024-01-21 30/week @ 2024-01-28 27/week @ 2024-02-04 38/week @ 2024-02-11

每月下载量118
用于 5 crates

MIT/Apache

11KB
355

codeviz

Build Status crates.io

codeviz 是一个用于 Rust 的简单代码生成器,特别为 reproto 的使用而编写。

本项目受到 JavaPoet (https://github.com/square/javapoet) 的启发

示例

#[macro_use]
extern crate codeviz_macros;
extern crate codeviz_java;

use codeviz_java::*;

fn main() {
  let string_type = Type::class("java.lang", "String");
  let list_type = Type::class("java.util", "List");
  let json_creator_type = Type::class("com.fasterxml.jackson.annotation", "JsonCreator");
  let list_of_strings = list_type.with_arguments(vec![&string_type]);

  let values_field = FieldSpec::new(mods![Modifier::Private, Modifier::Final],
                                    &list_of_strings,
                                    "values");

  let values_argument =
      ArgumentSpec::new(mods![Modifier::Final], &list_of_strings, "values");

  let mut constructor = ConstructorSpec::new(mods![Modifier::Public]);
  constructor.push_annotation(AnnotationSpec::new(json_creator_type));
  constructor.push_argument(&values_argument);
  constructor.push(java_stmt!["this.values = ", values_argument]);

  let mut values_getter = MethodSpec::new(mods![Modifier::Public], "getValues");
  values_getter.returns(&list_of_strings);
  values_getter.push(java_stmt!["return this.", &values_field]);

  let mut class = ClassSpec::new(mods![Modifier::Public], "Test");
  class.push_field(&values_field);
  class.push_constructor(&constructor);
  class.push_method(&values_getter);

  let mut file = FileSpec::new("se.tedro");
  file.push_class(&class);

  let result = file.format();
}

依赖项

~2.4–3.5MB
~69K SLoC