schemars/json_schema_impls/
ffi.rs
1use crate::gen::SchemaGenerator;
2use crate::schema::*;
3use crate::JsonSchema;
4use std::ffi::{CStr, CString, OsStr, OsString};
5
6impl JsonSchema for OsString {
7 fn schema_name() -> String {
8 "OsString".to_owned()
9 }
10
11 fn json_schema(gen: &mut SchemaGenerator) -> Schema {
12 let mut unix_schema = SchemaObject {
13 instance_type: Some(InstanceType::Object.into()),
14 ..Default::default()
15 };
16 let obj = unix_schema.object();
17 obj.required.insert("Unix".to_owned());
18 obj.properties
19 .insert("Unix".to_owned(), <Vec<u8>>::json_schema(gen));
20
21 let mut win_schema = SchemaObject {
22 instance_type: Some(InstanceType::Object.into()),
23 ..Default::default()
24 };
25 let obj = win_schema.object();
26 obj.required.insert("Windows".to_owned());
27 obj.properties
28 .insert("Windows".to_owned(), <Vec<u16>>::json_schema(gen));
29
30 let mut schema = SchemaObject::default();
31 schema.subschemas().one_of = Some(vec![unix_schema.into(), win_schema.into()]);
32 schema.into()
33 }
34}
35
36forward_impl!(OsStr => OsString);
37
38forward_impl!(CString => Vec<u8>);
39forward_impl!(CStr => Vec<u8>);