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 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99
/*! Reads and writes the [JSON AST](https://awslabs.github.io/smithy/1.0/spec/core/json-ast.html) representation described in the specification. As that there is no separate model-level namespace, all shape names have been made absolute in this representation. This is a problem when constructing the model, if there are shapes from different namespaces present the parser will return an error at this time. # Example The following JSON demonstrates the structure of the AST format. ```json { "smithy": "1.0", "metadata": { "authors": [ "Simon" ] }, "shapes": { "smithy.example#MyString": { "type": "string", "traits": { "smithy.api#documentation": "My documentation string", "smithy.api#tags": [ "a", "b" ] } }, "smithy.example#MyList": { "type": "list", "member": { "target": "smithy.api#String" } }, "smithy.example#MyStructure": { "type": "structure", "members": { "stringMember": { "target": "smithy.api#String", "traits": { "smithy.api#required": {} } }, "numberMember": { "target": "smithy.api#Integer" } } } } } ``` The following will parse the model above. ```rust use atelier_core::io::read_model_from_string; use atelier_json::io::JsonReader; # const JSON: &str = # r#"{ "smithy": "1.0", "shapes": { "smithy.example#MyString": { "type": "string" } } }"#; let mut reader = JsonReader::default(); let result = read_model_from_string(&mut reader, JSON); if result.is_err() { println!("{:?}", result); } assert!(result.is_ok()); println!("{:#?}", result.unwrap()); ``` */ #![warn( // ---------- Stylistic future_incompatible, nonstandard_style, rust_2018_idioms, trivial_casts, trivial_numeric_casts, // ---------- Public missing_debug_implementations, missing_docs, unreachable_pub, // ---------- Unsafe unsafe_code, // ---------- Unused unused_extern_crates, unused_import_braces, unused_qualifications, unused_results, )] // ------------------------------------------------------------------------------------------------ // Modules // ------------------------------------------------------------------------------------------------ pub mod io;