一覧へ戻る
audiocloud/schemars-zod(新しいタブで開きます)
主要言語: Rust
experimental schamars to zod converter
- star 数
- 6
- watcher 数
- 1
- fork 数
- 1
- issue 数
- 0
- 最終更新
- 2023/04/07
主要言語: Rust
experimental schamars to zod converter
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>;