#![cfg_attr(not(feature = "std"), no_std)]
#![cfg_attr(has_portable_simd, feature(portable_simd))]
#![warn(missing_docs)]
#![warn(clippy::std_instead_of_core)]
#![warn(clippy::std_instead_of_alloc)]
#![allow(uncommon_codepoints)]
#![doc = include_str!("../readme-footer.md")]
#[cfg(feature = "alloc")]
extern crate alloc;
mod types;
pub use types::*;
mod write;
pub use write::Write;
mod impls;
#[cfg(feature = "semver")]
pub use semver;
pub unsafe trait Facet<'facet>: 'facet {
const SHAPE: &'static Shape;
}
#[inline]
pub const fn shape_of<'a, T: Facet<'a>>() -> &'static Shape {
T::SHAPE
}
#[doc(hidden)]
#[allow(nonstandard_style)]
pub mod 𝟋 {
pub use crate::Attr as 𝟋Attr;
pub use crate::Def as 𝟋Def;
pub use crate::DefaultSource as 𝟋DS;
pub use crate::EnumRepr as 𝟋ERpr;
pub use crate::EnumType as 𝟋ETy;
pub use crate::EnumTypeBuilder as 𝟋ETyB;
pub use crate::Facet as 𝟋Fct;
pub use crate::Field as 𝟋Fld;
pub use crate::FieldBuilder as 𝟋FldB;
pub use crate::FieldFlags as 𝟋FF;
pub use crate::HashProxy as 𝟋HP;
pub use crate::MarkerTraits as 𝟋Mt;
pub use crate::Repr as 𝟋Repr;
pub use crate::Shape as 𝟋Shp;
pub use crate::ShapeBuilder as 𝟋ShpB;
pub use crate::ShapeFlags as 𝟋ShpF;
pub use crate::ShapeRef as 𝟋ShpR;
pub use crate::StructKind as 𝟋Sk;
pub use crate::StructType as 𝟋STy;
pub use crate::StructTypeBuilder as 𝟋STyB;
pub use crate::Type as 𝟋Ty;
pub use crate::UserType as 𝟋UTy;
pub use crate::VTableDirect as 𝟋VtD;
pub use crate::VTableErased as 𝟋VtE;
pub use crate::Variance as 𝟋Vnc;
pub use crate::VarianceDesc as 𝟋VncD;
pub use crate::Variant as 𝟋Var;
pub use crate::VariantBuilder as 𝟋VarB;
pub use ::core::option::Option::None as 𝟋None;
pub use ::core::option::Option::Some as 𝟋Some;
pub use ::core::result::Result::Err as 𝟋Err;
pub use ::core::result::Result::Ok as 𝟋Ok;
pub use ::core::mem::forget as 𝟋forget;
pub use ::core::mem::transmute as 𝟋transmute;
pub use ::core::ptr::drop_in_place as 𝟋drop_in_place;
pub use crate::shape_of as 𝟋shp;
pub use crate::DeclId as 𝟋DId;
pub use crate::decl_id_hash as 𝟋dih;
pub const 𝟋NOAT: &[crate::FieldAttribute] = &[];
pub const 𝟋NODOC: &[&str] = &[];
pub const 𝟋NOFL: crate::FieldFlags = crate::FieldFlags::empty();
pub const 𝟋CV: crate::VarianceDesc = crate::VarianceDesc::BIVARIANT;
pub type 𝟋Ph<'a> = ::core::marker::PhantomData<*mut &'a ()>;
#[cfg(feature = "alloc")]
pub type 𝟋Str = ::alloc::string::String;
#[cfg(not(feature = "alloc"))]
pub type 𝟋Str = &'static str;
pub type 𝟋Result<T, E> = ::core::result::Result<T, E>;
pub const fn 𝟋drop_for<T>() -> unsafe fn(*mut T) {
::core::ptr::drop_in_place::<T>
}
pub const fn 𝟋default_for<T: Default>() -> unsafe fn(*mut T) {
unsafe fn default_in_place<T: Default>(ptr: *mut T) {
unsafe { ptr.write(T::default()) };
}
default_in_place::<T>
}
pub const fn 𝟋clone_for<T: Clone>() -> unsafe fn(*const T, *mut T) {
unsafe fn clone_into<T: Clone>(src: *const T, dst: *mut T) {
unsafe { dst.write((*src).clone()) };
}
clone_into::<T>
}
pub const fn 𝟋indirect_drop_for<T>() -> unsafe fn(crate::OxPtrMut) {
unsafe fn drop_in_place<T>(ox: crate::OxPtrMut) {
unsafe { ::core::ptr::drop_in_place(ox.ptr().as_ptr::<T>() as *mut T) };
}
drop_in_place::<T>
}
pub const fn 𝟋indirect_default_for<T: Default>() -> unsafe fn(crate::OxPtrUninit) -> bool {
unsafe fn default_in_place<T: Default>(ox: crate::OxPtrUninit) -> bool {
unsafe { ox.put(T::default()) };
true
}
default_in_place::<T>
}
pub const fn 𝟋indirect_clone_for<T: Clone>() -> unsafe fn(crate::OxPtrConst, crate::OxPtrMut) {
unsafe fn clone_into<T: Clone>(src: crate::OxPtrConst, dst: crate::OxPtrMut) {
let src_val = unsafe { &*(src.ptr().as_byte_ptr() as *const T) };
unsafe { dst.ptr().as_uninit().put(src_val.clone()) };
}
clone_into::<T>
}
pub use crate::types::specialization::impls;
pub use crate::types::specialization::{
Spez, SpezCloneIntoNo, SpezCloneIntoYes, SpezDebugNo, SpezDebugYes, SpezDefaultInPlaceNo,
SpezDefaultInPlaceYes, SpezDisplayNo, SpezDisplayYes, SpezEmpty, SpezHashNo, SpezHashYes,
SpezOrdNo, SpezOrdYes, SpezParseNo, SpezParseYes, SpezPartialEqNo, SpezPartialEqYes,
SpezPartialOrdNo, SpezPartialOrdYes,
};
}