esyn 0.8.0

De/Serialization Rust In Rust.
Documentation

[WIP] esyn

De/Serialization Rust In Rust

Example

fn main() {
    use esyn::*;

    #[derive(Debug, PartialEq, EsynDe, EsynSer)]
    struct Test {
        _string: String,
        _vec_u32: Vec<u32>,
        _opt_i64: Option<i64>,
    }

    let test = Test {
        _string: "hello".to_string(),
        _vec_u32: vec![1, 2, 4],
        _opt_i64: Some(-9223372036854775807),
    };
    let config = r#"
fn main() {
    let a = Test {
        _string: "hello",
        _vec_u32: [1, 2, 4],
    };

    a._opt_i64 = Some(-9223372036854775807);
}
"#;

    let a = EsynBuilder::new()
        .set_fn("main")
        .set_val("a")
        .get_once::<Test>(config)
        .unwrap();

    assert_eq!(test, *a);

    // Serialization
    let code = quote! {
        fn main() {
            let a = #a;
        }
    }
    .into_pretty()
    .unwrap();

    println!("{code}");
}

For more examples take a look on tests.

Supported Types

u8 u16 u32 u64 u128 usize
i8 i16 i32 i64 i128 isize
f32 f64
bool
char String

Vec<T>
Option<T>
Box<T>

Struct
Enum
Tuple

see more