json_utils/schema/
schema_node_into.rs

1use super::*;
2
3macro_rules! valid_node_into_result {
4    ($e: ident) => {
5        enum_variant_into_result!(ValidNode, $e, $e);
6    };
7}
8
9macro_rules! node_into_result_via_valid_node {
10    ($e: ident) => {
11        impl Into<Result<$e, SchemaNode>> for SchemaNode {
12            fn into(self) -> Result<$e, SchemaNode> {
13                match self {
14                    SchemaNode::ValidNode(valid_node) => {
15                        Into::<Result<$e, ValidNode>>::into(valid_node)
16                            .map_err(SchemaNode::ValidNode)
17                    }
18
19                    other => Err(other),
20                }
21            }
22        }
23    };
24}
25
26valid_node_into_result!(NullNode);
27valid_node_into_result!(BooleanNode);
28valid_node_into_result!(StringNode);
29valid_node_into_result!(IntegerNode);
30valid_node_into_result!(NumberNode);
31valid_node_into_result!(ArrayNode);
32valid_node_into_result!(ObjectNode);
33
34node_into_result_via_valid_node!(NullNode);
35node_into_result_via_valid_node!(BooleanNode);
36node_into_result_via_valid_node!(StringNode);
37node_into_result_via_valid_node!(IntegerNode);
38node_into_result_via_valid_node!(NumberNode);
39node_into_result_via_valid_node!(ArrayNode);
40node_into_result_via_valid_node!(ObjectNode);