reflectapi_schema/
transforms.rs1use crate::{Field, TypeReference, Typespace};
2
3pub fn fallback_recursively(field: &mut Field, schema: &Typespace) {
5 field.type_ref.fallback_recursively(schema);
6}
7
8pub fn make_required(field: &mut Field, _schema: &Typespace) {
15 if field.type_ref.name() == "std::option::Option" {
16 if let Some(inner) = field.type_ref.arguments().next().cloned() {
17 field.type_ref = inner;
18 }
19 } else if field.type_ref.name() == "reflectapi::Option" {
20 let arguments = field.type_ref.arguments().cloned().collect::<Vec<_>>();
21 field.type_ref = TypeReference::new("std::option::Option", arguments);
22 }
23 field.required = true;
24}
25
26pub fn make_nonnullable(field: &mut Field, _schema: &Typespace) {
33 if field.type_ref.name() == "std::option::Option"
34 || field.type_ref.name() == "reflectapi::Option"
35 {
36 if let Some(inner) = field.type_ref.arguments().next().cloned() {
37 field.type_ref = inner;
38 }
39 }
40}
41
42pub fn make_required_and_nonnullable(field: &mut Field, schema: &Typespace) {
49 make_nonnullable(field, schema);
50 make_required(field, schema);
51}