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>);