#![allow(missing_docs)]
#![cfg_attr(not(feature = "std"), no_std)]
extern crate alloc;
#[cfg(feature = "std")]
extern crate core;
#[cfg(feature = "serde")]
extern crate serde;
#[cfg(feature = "stable_deref_trait")]
extern crate stable_deref_trait;
use alloc::alloc::{alloc, dealloc, Layout};
use core::borrow::{Borrow, BorrowMut};
use core::cmp::Ordering;
use core::convert::From;
use core::fmt;
use core::hash::{Hash, Hasher};
use core::marker::PhantomData;
use core::mem;
use core::ops::{Deref, DerefMut};
use core::ptr;
use core::sync::atomic;
use core::sync::atomic::Ordering::{self as LoadOrdering, Acquire, Relaxed, Release};
use core::{isize, usize};
#[cfg(feature = "erasable")]
use erasable::{Erasable, ErasablePtr, ErasedPtr};
#[cfg(feature = "serde")]
use serde::{Deserialize, Serialize};
#[cfg(feature = "stable_deref_trait")]
use stable_deref_trait::{CloneStableDeref, StableDeref};
#[cfg(feature = "stowaway")]
use stowaway::Stowable;
mod arc;
mod borrow;
#[cfg(feature = "ptr-union")]
mod union;
mod unique;
pub use arc::*;
pub use borrow::*;
#[cfg(feature = "ptr-union")]
pub use union::*;
pub use unique::*;
#[cfg(feature = "std")]
use std::process::abort;
#[cfg(not(feature = "std"))]
#[cold]
fn abort() -> ! {
struct PanicOnDrop;
impl Drop for PanicOnDrop {
fn drop(&mut self) {
panic!()
}
}
let _double_panicer = PanicOnDrop;
panic!();
}