atelier_lib/lib.rs
1/*!
2Combined crate for all Atelier sub-crates incorporated as features. Atelier is a Rust native
3library, and tools, for the AWS [Smithy](https://github.com/awslabs/smithy) Interface Definition
4Language.
5
6# Features
7
8The aim of this crate is to provide a single client interface over a set of crates that provide
9different Atelier capabilities. The following table shows the mapping from individual crate to the
10combined module path in this library. The column _Default_ indicates those that are included in the
11default feature, although the core will be included regardless of any feature selection.
12
13| Feature name | Default | Individual crate | Target module path | Purpose |
14|--------------|---------|------------------------------------------------------|------------------------|-------------------------------------------------------|
15| N/A | **Yes** | [atelier_core](https://docs.rs/atelier_core) | `::core` | Semantic model, builders, and API traits. |
16| "assembler" | **Yes** | [atelier_assembler](https://docs.rs/atelier_assembler) | `::assembler` | Model assembly from multiple files. |
17| "describe" | **Yes** | [atelier_describe](https://docs.rs/atelier_describe) | `::format::document` | Writing markdown documentation. |
18| | | | `::format::graphml` | Writing GraphML visualizations. |
19| | | | `::format::plant_uml` | Writing UML visualizations. |
20| "json" | **Yes** | [atelier_json](https://docs.rs/atelier_json) | `::format::json` | Reading and Writing JSON AST representation. |
21| "openapi" | No | [atelier_openapi](https://docs.rs/atelier_openapi) | `::format::openapi` | Reading and Writing OpenAPI representations. |
22| "rdf" | No | [atelier_rdf](https://docs.rs/atelier_rdf) | `::format::rdf` | Reading and Writing RDF representations. |
23| "smithy" | **Yes** | [atelier_smithy](https://docs.rs/atelier_smithy) | `::format::smithy` | Reading and Writing the Smithy native representation. |
24
25This crate also provides some pre-defined [action](actions/index.html) functions for linting and
26validating models.
27
28*/
29
30#![warn(
31 // ---------- Stylistic
32 future_incompatible,
33 nonstandard_style,
34 rust_2018_idioms,
35 trivial_casts,
36 trivial_numeric_casts,
37 // ---------- Public
38 missing_debug_implementations,
39 missing_docs,
40 unreachable_pub,
41 // ---------- Unsafe
42 unsafe_code,
43 // ---------- Unused
44 unused_extern_crates,
45 unused_import_braces,
46 unused_qualifications,
47 unused_results,
48)]
49
50pub use atelier_core as core;
51
52pub mod actions;
53
54#[cfg(feature = "assembler")]
55pub use atelier_assembler as assembler;
56
57#[cfg(any(
58 feature = "describe",
59 feature = "json",
60 feature = "openapi",
61 feature = "rdf",
62 feature = "smithy",
63))]
64pub mod format;