#![doc(html_logo_url = "https://raw.githubusercontent.com/mitsuhiko/deser/main/artwork/logo.svg")]
#![cfg_attr(docsrs, feature(doc_cfg))]
#![cfg_attr(not(any(feature = "std", test)), no_std)]
extern crate alloc;
#[macro_use]
mod macros;
mod event;
pub mod adapters;
mod arena;
pub mod de;
mod error;
pub mod ext;
pub mod hints;
#[cfg(feature = "io")]
pub mod io;
pub mod ser;
pub mod stream;
mod bytes_format;
mod context;
mod extensions;
mod foreign_impls;
#[cfg(feature = "open-enums")]
mod open_enum;
mod position;
mod source;
mod state;
mod std_impls;
#[cfg(feature = "std")]
mod std_only_impls;
mod sync;
mod text;
mod unwind;
pub use self::bytes_format::BytesFormat;
pub use self::context::Context;
pub use self::error::{Error, ErrorAttachment, ErrorCategory, ErrorContext, ErrorKind};
pub use self::event::{Atom, Bytes, ContainerShape, Event, Implicit, ImplicitValue, Order};
pub use self::extensions::EventData;
#[cfg(feature = "open-enums")]
pub use self::open_enum::{OpenEnum, OpenEnums, OpenVariant};
pub use self::position::Position;
pub use self::source::{Source, TrackLocations};
pub use self::state::State;
pub use self::text::Text;
#[doc(no_inline)]
pub use self::{de::Deserialize, ser::Serialize, stream::Streamed};
#[cfg(feature = "derive")]
pub mod derive;
#[cfg(feature = "derive")]
#[doc(hidden)]
pub mod __derive {
pub use alloc::borrow::Cow;
pub use alloc::boxed::Box;
pub use alloc::string::String;
pub use alloc::vec::Vec;
pub use core::convert::Into;
pub use core::default::Default;
pub use core::marker::{PhantomData, Send, Sync};
pub use core::mem::replace;
pub use core::option::Option::{self, None, Some};
pub use core::primitive::{str, u8};
pub use core::result::Result::{Err, Ok};
pub use core::unreachable;
pub type Result<T> = core::result::Result<T, super::Error>;
pub type StrCow<'a> = Cow<'a, str>;
pub use crate::adapters::{DerivedDeserialize, DerivedSerialize};
pub use crate::de::atoms::{
atom_into, atom_into_handle, borrowed_atom_into, borrowed_atom_into_handle, field_update,
unit_struct,
};
pub use crate::de::enums::{
AdjacentlyTaggedSink, ArenaVariant, EnumKey, ExternallyTaggedSink, IgnoredContent,
IgnoredVariant, InternallyTaggedSink, OtherVariant, Tag, UnitEnum, UntaggedTry,
ValueVariant, VariantMaker, VariantNames, Variants, atom_sink, unit_enum_atom_into,
unit_enum_sink, untagged_atom, untagged_borrowed_atom, untagged_fallback, untagged_handle,
};
pub use crate::de::fields::{
Collect, FieldKeySink, FieldSlot, FieldValue, NextField, StructFields, StructFinish,
StructInfo, StructSink, StructUpdateSink, UpdateFields, collected_errors, missing_field,
new_missing_field_error, no_field_slot,
};
pub use crate::de::mapped::mapped;
pub use crate::de::recording::RecordBuf;
pub use crate::de::unknown::{unclaimed_keys, unknown_field};
pub use crate::de::update::UpdateTarget;
pub use crate::error::unknown_variant;
pub use crate::ser::begin::{
Begin, FIELDS_END, IndexedSeq, IndexedSeqEmitter, IndexedStruct, PlainSink, StructField,
describe_struct, emit_plain_field, serialize_indexed,
};
pub use crate::ser::enums::{
EntrySer, FieldSer, FieldsSer, FlatFieldsSer, SeqSer, TaggedContent, TaggedNewtype,
UnitName, UnitVariants, begin_unit, describe_unit, serialize_unit, skipped_variant,
};
pub use crate::ser::flatten::FlattenedStruct;
#[cfg(feature = "open-enums")]
pub use crate::de::DeserializeArc;
#[cfg(feature = "open-enums")]
pub use crate::open_enum::{
OpenEnumInfo, OpenRepr, VariantEntry, VariantValue,
container_shape as open_enum_container_shape, describe as open_enum_describe,
deserialize_arc as open_enum_deserialize_arc, deserialize_box as open_enum_deserialize_box,
serialize as open_enum_serialize,
};
#[cfg(feature = "open-enums")]
pub use alloc::sync::Arc;
}