vodca 0.1.8

Reduce boilerplate when writing DDD codes
Documentation
#![allow(dead_code)]

use std::marker::PhantomData;
use vodca::Newln;

#[derive(Newln)]
pub struct TupleStructI32(i32);

#[derive(Newln)]
pub struct TupleStructString(String);

#[derive(Newln)]
pub struct TupleStructVec(Vec<i32>);

#[derive(Newln)]
pub struct TupleStructGenerics<T>(i32, PhantomData<T>);

#[derive(Newln)]
pub struct Struct<T> {
    field_i32: i32,
    field_string: String,
    field_vec: Vec<i32>,
    data: PhantomData<T>,
}

fn main() {
    let ts_i32 = TupleStructI32::new(42);
    assert_eq!(ts_i32.0, 42);

    let ts_string = TupleStructString::new("Hello, world!".to_string());
    assert_eq!(ts_string.0, "Hello, world!".to_string());

    let ts_vec = TupleStructVec::new(vec![1, 2, 3]);
    assert_eq!(ts_vec.0, vec![1, 2, 3]);

    let ts_generics = TupleStructGenerics::<()>::new(42, PhantomData);
    assert_eq!(ts_generics.0, 42);

    let s: Struct<String> =
        Struct::new(42, "Hello, world!".to_string(), vec![1, 2, 3], PhantomData);

    let i32 = s.field_i32;
    assert_eq!(i32, 42);

    let str = s.field_string;
    assert_eq!(str, "Hello, world!");

    let vec = s.field_vec;
    assert_eq!(vec, &[1, 2, 3]);
}