1//! Traits for generically dealing with an encoding framework.
2//!
3//! The central traits are [Encode] and [Encoder].
4//!
5//! A type implementing [Encode] can use an [Encoder] to encode itself. This
6//! also comes with a derive allowing you to derive high performance encoding
7//! associated with native Rust types.
8//!
9//! Note that using derives directly from `musli_core` requires you to use the
10//! `#[musli(crate = musli_core)]` attribute.
11//!
12//! # Examples
13//!
14//! ```
15//! use musli_core::Encode;
16//!
17//! #[derive(Encode)]
18//! #[musli(crate = musli_core)]
19//! pub struct Person<'a> {
20//! name: &'a str,
21//! age: u32,
22//! }
23//! ```
2425pub use musli_macros::Encode;
2627mod encode;
28pub use self::encode::Encode;
2930mod encode_bytes;
31pub use self::encode_bytes::EncodeBytes;
3233mod encode_packed;
34pub use self::encode_packed::EncodePacked;
3536mod encode_trace;
37pub use self::encode_trace::EncodeTrace;
3839mod encoder;
40pub use self::encoder::Encoder;
4142mod entries_encoder;
43pub use self::entries_encoder::EntriesEncoder;
4445mod entry_encoder;
46pub use self::entry_encoder::EntryEncoder;
4748mod map_encoder;
49pub use self::map_encoder::MapEncoder;
5051mod sequence_encoder;
52pub use self::sequence_encoder::SequenceEncoder;
5354mod variant_encoder;
55pub use self::variant_encoder::VariantEncoder;