| Crates.io | schemars-zod |
| lib.rs | schemars-zod |
| version | 0.1.5 |
| created_at | 2023-04-01 09:22:06.038937+00 |
| updated_at | 2023-04-06 19:43:02.987756+00 |
| description | A few functions to aid Zod schema generation from rust types annotated with schemars |
| homepage | https://lib.rs/crates/schemars-zod |
| repository | https://github.com/audiocloud/schemars-zod |
| max_upload_size | |
| id | 827182 |
| size | 43,183 |
experimental schamars to zod converter.
Contains A few functions to aid Zod schema generation from rust types annotated with schemars.
given these types:
#[derive(schemars::JsonSchema)]
struct MyStruct {
a: String,
b: u32,
}
#[derive(schemars::JsonSchema)]
#[serde(rename_all = "camelCase")]
struct MyOtherStruct {
x: f64,
y: f64,
other: MyStruct,
more: Vec<MyStruct>,
more_more: HashMap<String, MyStruct>,
time: DateTime<Utc>, // from chrono crate
}
This code will corresponding Zod types:
let merged = merge_schemas(vec![schema_for!(MyStruct), schema_for!(MyOtherStruct)].into_iter());
let converted = convert(merged);
println!("{}", converted);
And output:
export const MyStruct = z.object({a: z.string(), b: z.number().int(),});
export type MyStruct = z.infer<typeof MyStruct>;
export const MyOtherStruct = z.object({
more: z.array(z.lazy(() => MyStruct)),
moreMore: z.record(z.lazy(() => MyStruct)),
other: z.lazy(() => MyStruct),
time: z.coerce.date(),
x: z.number(),
y: z.number(),
});
export type MyOtherStruct = z.infer<typeof MyOtherStruct>;