1 unstable release

0.1.1 Apr 6, 2024

#298 in Procedural macros

Download history 163/week @ 2024-04-05

163 downloads per month

MIT license

9KB
80 lines

vodca

vodca generates boiler-template codes in DDD

ValueObject

Fromln

use vodca::Fromln;

#[derive(Fromln)]
pub struct TupleStruct(String);

/// generated by vodca
impl From<TupleStruct> for String {
    fn from(value: TupleStruct) -> Self {
        value.0
    }
}
///

fn main() {
    let ts = TupleStruct("Hello, world!".to_string());
    let parsed: String = ts.into();
    assert_eq!(parsed, "Hello, world!");
}

AsRefln


use vodca::AsRefln;

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

/// generated by vodca
impl AsRef<String> for TupleStructString {
    fn as_ref(&self) -> &String {
        &self.0
    }
}
///

fn main() {
    let ts_string = TupleStructString("Hello, world!".to_string());
    let str: &str = ts_string.as_ref();
    assert_eq!(str, "Hello, world!");
}

Entity

References


use vodca::References;

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

/// generated by vodca
impl Struct {
    pub fn field_i32(&self) -> &i32 {
        &self.field_i32
    }

    pub fn field_string(&self) -> &String {
        &self.field_string
    }

    pub fn field_vec(&self) -> &Vec<i32> {
        &self.field_vec
    }
}
///

fn main() {
    let s = Struct {
        field_i32: 42,
        field_string: "Hello, world!".to_string(),
        field_vec: vec![1, 2, 3]
    };

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

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

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

Dependencies

~265–710KB
~17K SLoC