#![doc(html_root_url = "https://docs.rs/serde_yaml/0.9.34+deprecated")]
#![deny(missing_docs, unsafe_op_in_unsafe_fn)]
#![allow(
// buggy
clippy::iter_not_returning_iterator, // https://github.com/rust-lang/rust-clippy/issues/8285
clippy::ptr_arg, // https://github.com/rust-lang/rust-clippy/issues/9218
clippy::question_mark, // https://github.com/rust-lang/rust-clippy/issues/7859
// private Deserializer::next
clippy::should_implement_trait,
// things are often more readable this way
clippy::cast_lossless,
clippy::checked_conversions,
clippy::if_not_else,
clippy::manual_assert,
clippy::match_like_matches_macro,
clippy::match_same_arms,
clippy::module_name_repetitions,
clippy::needless_pass_by_value,
clippy::redundant_else,
clippy::single_match_else,
// code is acceptable
clippy::blocks_in_conditions,
clippy::cast_possible_truncation,
clippy::cast_possible_wrap,
clippy::cast_precision_loss,
clippy::cast_sign_loss,
clippy::derive_partial_eq_without_eq,
clippy::derived_hash_with_manual_eq,
clippy::doc_markdown,
clippy::items_after_statements,
clippy::let_underscore_untyped,
clippy::manual_map,
clippy::missing_panics_doc,
clippy::never_loop,
clippy::return_self_not_must_use,
clippy::too_many_lines,
clippy::uninlined_format_args,
clippy::unsafe_removed_from_name,
clippy::wildcard_in_or_patterns,
// noisy
clippy::missing_errors_doc,
clippy::must_use_candidate,
)]
pub use crate::de::{from_reader, from_slice, from_str, Deserializer};
pub use crate::error::{Error, Result};
pub use crate::ser::{to_string, to_writer, Serializer};
#[doc(inline)]
pub use crate::spanned::{reset_marker, set_marker, Marker, Span, Spanned};
#[cfg(feature = "filename")]
#[doc(inline)]
pub use crate::spanned::with_filename;
#[doc(inline)]
pub use crate::shouldbe::{ShouldBe, WhyNot};
#[doc(inline)]
pub use crate::value::{from_value, to_value, Index, Number, Sequence, Value};
#[cfg(feature = "schemars")]
pub use crate::verbatim::maybe_transformable;
#[doc(inline)]
pub use crate::verbatim::Verbatim;
#[doc(inline)]
pub use crate::mapping::Mapping;
#[doc(inline)]
pub use crate::path::Path;
mod de;
mod error;
mod libyaml;
mod loader;
pub mod mapping;
mod number;
pub mod path;
mod ser;
mod shouldbe;
pub mod spanned;
pub mod value;
mod verbatim;
pub mod with;
mod private {
pub trait Sealed {}
impl Sealed for usize {}
impl Sealed for str {}
impl Sealed for String {}
impl Sealed for crate::Value {}
impl<T> Sealed for &T where T: ?Sized + Sealed {}
}
#[cfg(feature = "flatten_dunder")]
#[inline]
pub(crate) fn is_flatten_key(key: &[u8]) -> bool {
key.len() > 4
&& key[0] == b'_'
&& key[1] == b'_'
&& key[key.len() - 2] == b'_'
&& key[key.len() - 1] == b'_'
}
#[cfg(not(feature = "flatten_dunder"))]
#[inline]
pub(crate) fn is_flatten_key(_key: &[u8]) -> bool {
false
}
pub use dbt_yaml_derive::UntaggedEnumDeserialize;
pub mod __private {
pub struct InternallyTaggedUnitVisitor<'a> {
type_name: &'a str,
variant_name: &'a str,
}
impl<'a> InternallyTaggedUnitVisitor<'a> {
pub fn new(type_name: &'a str, variant_name: &'a str) -> Self {
InternallyTaggedUnitVisitor {
type_name,
variant_name,
}
}
}
impl<'de, 'a> serde::de::Visitor<'de> for InternallyTaggedUnitVisitor<'a> {
type Value = ();
fn expecting(&self, formatter: &mut std::fmt::Formatter) -> std::fmt::Result {
write!(
formatter,
"unit variant {}::{}",
self.type_name, self.variant_name
)
}
fn visit_seq<S>(self, _: S) -> Result<(), S::Error>
where
S: serde::de::SeqAccess<'de>,
{
Ok(())
}
fn visit_map<M>(self, mut access: M) -> Result<(), M::Error>
where
M: serde::de::MapAccess<'de>,
{
while match access.next_entry::<serde::de::IgnoredAny, serde::de::IgnoredAny>() {
Ok(val) => val,
Err(err) => return Err(err),
}
.is_some()
{}
Ok(())
}
}
}
#[cfg(feature = "schemars")]
pub use dbt_yaml_schemars_derive::{DbtSchema, JsonSchema};