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