From 1c0f626e3faa7106bf7cbfae211c62141a5c13af Mon Sep 17 00:00:00 2001 From: Graham Esau Date: Fri, 27 Dec 2019 17:06:46 +0000 Subject: [PATCH] Add overview to docs site --- docs/index.md | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/docs/index.md b/docs/index.md index fc10147..2868342 100644 --- a/docs/index.md +++ b/docs/index.md @@ -6,6 +6,14 @@ nav_order: 1 # Schemars -Hello world! +Schemars is a library to generate JSON Schema documents from Rust data structures. -This is where the docs will go, once I've written them... \ No newline at end of file +This is built on Rust's trait system - any type which implements the [`JsonSchema`](https://docs.rs/schemars/latest/schemars/trait.JsonSchema.html) trait can have a JSON Schema generated describing that type. Schemars implements this on many standard library types, and provides a derive macro to automatically implement it on custom types. + +One of the main aims of this library is compatibility with [Serde](https://github.com/serde-rs/serde). Any generated schema *should* match how [serde_json](https://github.com/serde-rs/json) would serialize/deserialize to/from JSON. To support this, Schemars will check for any `#[serde(...)]` attributes on types that derive `JsonSchema`, and adjust the generated schema accordingly. + +## Basic Usage + +If you don't really care about the specifics, the easiest way to generate a JSON schema for your types is to `#[derive(JsonSchema)]` and use the `schema_for!` macro. All fields of the type must also implement `JsonSchema` - Schemars implements this for many standard library types. + +{% include example.md name="main" %}