#![allow(missing_docs)]
#![cfg_attr(not(feature = "std"), no_std)]
extern crate alloc;
#[cfg(feature = "std")]
extern crate core;
#[cfg(feature = "arc-swap")]
extern crate arc_swap;
#[cfg(feature = "serde")]
extern crate serde;
#[cfg(feature = "stable_deref_trait")]
extern crate stable_deref_trait;
#[cfg(feature = "unsize")]
extern crate unsize;
macro_rules! offset_of {
($ty: path, $field: tt) => {{
let $ty { $field: _, .. };
let uninit = <::core::mem::MaybeUninit<$ty>>::uninit();
let base_ptr: *const $ty = uninit.as_ptr();
#[allow(unused_unsafe)]
let field_ptr = unsafe { ::core::ptr::addr_of!((*base_ptr).$field) };
(field_ptr as usize) - (base_ptr as usize)
}};
}
mod arc;
mod arc_borrow;
#[cfg(feature = "arc-swap")]
mod arc_swap_support;
mod arc_union;
mod header;
mod offset_arc;
mod thin_arc;
mod unique_arc;
pub use arc::*;
pub use arc_borrow::*;
pub use arc_union::*;
pub use header::*;
pub use offset_arc::*;
pub use thin_arc::*;
pub use unique_arc::*;
#[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!();
}