#![allow(unused_imports)]
#![allow(dead_code)]
#[cfg(all(feature = "serde", feature = "alloc"))]
pub(crate) use serde::de::{
Deserialize, Deserializer, Error as DeError, IgnoredAny, SeqAccess, Visitor,
};
#[cfg(all(feature = "serde", feature = "alloc"))]
pub(crate) use serde::ser::{Error as SerError, Serialize, Serializer};
#[cfg(feature = "alloc")]
pub(crate) use alloc::{
borrow::ToOwned,
string::{FromUtf8Error, String},
};
#[cfg_attr(docsrs, doc(cfg(all())))]
#[cfg(feature = "alloc")]
pub type Box<T> = alloc::boxed::Box<T>;
#[cfg_attr(docsrs, doc(hidden))]
#[cfg(not(feature = "alloc"))]
#[derive(Clone, Default, PartialEq, Eq, Hash, PartialOrd, Ord)]
#[repr(transparent)]
pub struct Box<T>(T);
#[cfg(not(feature = "alloc"))]
impl<T> Box<T> {
#[inline]
pub const fn new(x: T) -> Self {
Self(x)
}
#[inline]
pub fn into_inner(b: Self) -> T {
b.0
}
}
#[cfg(not(feature = "alloc"))]
impl<T> core::ops::Deref for Box<T> {
type Target = T;
#[inline]
fn deref(&self) -> &T {
&self.0
}
}
#[cfg(not(feature = "alloc"))]
impl<T> core::ops::DerefMut for Box<T> {
#[inline]
fn deref_mut(&mut self) -> &mut T {
&mut self.0
}
}
#[cfg(not(feature = "alloc"))]
impl<T> AsRef<T> for Box<T> {
#[inline]
fn as_ref(&self) -> &T {
&self.0
}
}
#[cfg(not(feature = "alloc"))]
impl<T> AsMut<T> for Box<T> {
#[inline]
fn as_mut(&mut self) -> &mut T {
&mut self.0
}
}
#[cfg(not(feature = "alloc"))]
impl<T> core::borrow::Borrow<T> for Box<T> {
#[inline]
fn borrow(&self) -> &T {
&self.0
}
}
#[cfg(not(feature = "alloc"))]
impl<T> From<T> for Box<T> {
#[inline]
fn from(x: T) -> Self {
Self(x)
}
}
#[cfg(not(feature = "alloc"))]
impl<T: core::fmt::Debug> core::fmt::Debug for Box<T> {
fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
self.0.fmt(f)
}
}
#[cfg(not(feature = "alloc"))]
impl<T: core::fmt::Display> core::fmt::Display for Box<T> {
fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
self.0.fmt(f)
}
}
#[cfg(feature = "alloc")]
#[inline]
pub const fn box_as_ref<T>(b: &Box<T>) -> &T {
b
}
#[cfg(not(feature = "alloc"))]
#[inline]
pub const fn box_as_ref<T>(b: &Box<T>) -> &T {
&b.0
}
#[cfg_attr(docsrs, doc(cfg(all())))]
#[cfg(feature = "alloc")]
pub type Vec<T> = alloc::vec::Vec<T>;
#[cfg_attr(docsrs, doc(hidden))]
#[cfg(not(feature = "alloc"))]
pub type Vec<T> = &'static [T];