#[cfg(test)]
mod tests;
#[macro_use]
mod parsing;
pub use self::parsing::Parser;
mod any;
pub use self::any::Any;
mod any_mut;
pub use self::any_mut::AnyMut;
mod data;
pub use self::data::Id;
mod error;
pub use self::error::{Error, ErrorKind};
mod document;
pub use self::document::Document;
mod raw;
mod value;
pub use self::value::{Block, Chomp, Null, Separator, StringKind, Value};
mod value_mut;
pub use self::value_mut::ValueMut;
mod number;
pub use self::number::Number;
mod string;
pub use self::string::String;
pub mod sequence;
#[doc(inline)]
pub use self::sequence::{Sequence, SequenceMut};
pub mod mapping;
#[doc(inline)]
pub use self::mapping::{Mapping, MappingMut};
#[cfg(feature = "serde")]
#[cfg_attr(doc_cfg, doc(cfg(feature = "serde")))]
pub mod serde;
#[cfg(any(feature = "serde", feature = "serde-edits"))]
mod serde_hint {
#[cfg(feature = "serde-edits")]
use serde::{Deserialize, Serialize};
#[derive(Debug, Clone, Copy)]
#[cfg_attr(feature = "serde-edits", derive(Serialize, Deserialize))]
#[cfg_attr(feature = "serde-edits", serde(tag = "kind"))]
pub(crate) enum RawNumberHint {
Float32,
Float64,
Unsigned8,
Unsigned16,
Unsigned32,
Unsigned64,
Unsigned128,
Signed8,
Signed16,
Signed32,
Signed64,
Signed128,
}
pub(crate) const F32: RawNumberHint = RawNumberHint::Float32;
pub(crate) const F64: RawNumberHint = RawNumberHint::Float64;
pub(crate) const U8: RawNumberHint = RawNumberHint::Unsigned8;
pub(crate) const U16: RawNumberHint = RawNumberHint::Unsigned16;
pub(crate) const U32: RawNumberHint = RawNumberHint::Unsigned32;
pub(crate) const U64: RawNumberHint = RawNumberHint::Unsigned64;
pub(crate) const U128: RawNumberHint = RawNumberHint::Unsigned128;
pub(crate) const I8: RawNumberHint = RawNumberHint::Signed8;
pub(crate) const I16: RawNumberHint = RawNumberHint::Signed16;
pub(crate) const I32: RawNumberHint = RawNumberHint::Signed32;
pub(crate) const I64: RawNumberHint = RawNumberHint::Signed64;
pub(crate) const I128: RawNumberHint = RawNumberHint::Signed128;
}
#[cfg(not(any(feature = "serde", feature = "serde-edits")))]
mod serde_hint {
#[derive(Debug, Clone, Copy)]
#[repr(transparent)]
#[non_exhaustive]
pub(crate) struct RawNumberHint;
pub(crate) const F32: RawNumberHint = RawNumberHint;
pub(crate) const F64: RawNumberHint = RawNumberHint;
pub(crate) const U8: RawNumberHint = RawNumberHint;
pub(crate) const U16: RawNumberHint = RawNumberHint;
pub(crate) const U32: RawNumberHint = RawNumberHint;
pub(crate) const U64: RawNumberHint = RawNumberHint;
pub(crate) const U128: RawNumberHint = RawNumberHint;
pub(crate) const I8: RawNumberHint = RawNumberHint;
pub(crate) const I16: RawNumberHint = RawNumberHint;
pub(crate) const I32: RawNumberHint = RawNumberHint;
pub(crate) const I64: RawNumberHint = RawNumberHint;
pub(crate) const I128: RawNumberHint = RawNumberHint;
}
pub fn from_slice<D>(input: D) -> Result<Document, Error>
where
D: AsRef<[u8]>,
{
let parser = Parser::new(input.as_ref());
parser.parse()
}