zod 0.1.0

Rust integraions with the `zod` typescript library.
Documentation
use pretty_assertions::assert_eq;
use zod::ZodType;

mod test_utils;

#[test]
fn serde_skip_struct_field() {
    test_case! {
        #[derive(Debug, PartialEq, serde::Deserialize)]
        struct Test {
            #[serde(skip)]
            to_be_skipped: String,
            num: usize,
        }
    }

    let value = Test {
        to_be_skipped: String::new(),
        num: 123,
    };

    assert_eq!(
        value,
        serde_json::from_value(serde_json::json!({"num": 123})).unwrap()
    );
    assert!(!Test::schema().contains("to_be_skipped"));
}

#[test]
fn serde_skip_deserializing_struct_field() {
    test_case! {
        #[derive(Debug, PartialEq, serde::Deserialize)]
        struct Test {
            #[serde(skip_deserializing)]
            to_be_skipped: String,
            num: usize,
        }
    }

    let value = Test {
        to_be_skipped: String::new(),
        num: 123,
    };

    assert_eq!(
        value,
        serde_json::from_value(serde_json::json!({"num": 123})).unwrap()
    );

    assert!(!Test::schema().contains("to_be_skipped"));
}