# forma_core
Core serialization and deserialization framework for
[forma](https://crates.io/crates/forma) -- data model, traits, and error types.
**Most users should depend on `forma` instead of using this crate directly.**
## Overview
`forma_core` defines the traits and types that make up the forma data model:
- **`Serialize`** / **`Serializer`** -- convert Rust values into a format-neutral
data model (30 types).
- **`Deserialize`** / **`Deserializer`** / **`Visitor`** -- reconstruct Rust
values from serialized data.
- **`Content`** -- buffering system for flatten and tagged enum support.
- **`SerError`** / **`DeError`** -- trait-based errors that carry type context
from the start.
- **`Impossible`** -- uninhabitable type for compound traits a format does not
support.
- **`forward_to_deserialize_any!`** -- macro for self-describing formats.
- **`IntoDeserializer`** and `de::value` -- ready-made building-block
deserializers for format authors.
Includes `Serialize` and `Deserialize` impls for 60+ standard library types.
## `no_std` Support
`forma_core` works without the standard library:
```toml
[dependencies]
forma_core = { version = "0.1", default-features = false, features = ["alloc"] }
```
The `alloc` feature enables collections, `String`, `Content`, and related impls.
Primitive serialization and deserialization works with no features at all.
## License
Licensed under either of Apache License, Version 2.0 or MIT License at your
option.