Crates.io | codeviz_java |
lib.rs | codeviz_java |
version | 0.2.2 |
source | src |
created_at | 2017-06-25 15:20:35.991038 |
updated_at | 2017-10-03 11:25:42.723864 |
description | Flexible code generator for Rust |
homepage | https://github.com/udoprog/codeviz |
repository | https://github.com/udoprog/codeviz |
max_upload_size | |
id | 20598 |
size | 36,807 |
codeviz is a simple code generator for rust, specifically written for use in reproto.
This project is inspired by 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();
}