use crate::{IMetadata, ItemHolder};
pub(crate) trait IDropHandler<T: ?Sized, M: IMetadata> {
fn do_drop(&mut self, ptr: *mut ItemHolder<T, M>);
fn report_sole_user(&mut self);
}
#[cfg(feature = "std")]
pub(crate) mod std_drop_handler;
#[cfg(all(not(feature = "nostd_unchecked_panics"), not(feature = "std")))]
pub(crate) mod no_std_drop_handler;
#[cfg(all(feature = "nostd_unchecked_panics", not(feature = "std")))]
pub(crate) mod unchecked_drop_handler;
#[cfg(feature = "std")]
pub(crate) use std_drop_handler::DropHandler;
#[cfg(all(not(feature = "nostd_unchecked_panics"), not(feature = "std")))]
pub(crate) use no_std_drop_handler::DropHandler;
#[cfg(all(feature = "nostd_unchecked_panics", not(feature = "std")))]
pub(crate) use unchecked_drop_handler::DropHandler;
pub(crate) mod stealing_drop;