#![no_std]
#![cfg_attr(feature = "unstable_name_collision", allow(unstable_name_collision))]
pub mod alloc;
pub mod boxed;
pub mod raw_vec;
pub use alloc::*;
pub use boxed::*;
pub use raw_vec::*;
use core::ptr::NonNull;
pub trait NonNullCast {
fn cast<U>(self) -> NonNull<U>;
fn as_opaque(self) -> NonNull<Opaque>;
}
impl<T: ?Sized> NonNullCast for NonNull<T> {
fn cast<U>(self) -> NonNull<U> {
unsafe {
NonNull::new_unchecked(self.as_ptr() as *mut U)
}
}
fn as_opaque(self) -> NonNull<Opaque> {
self.cast()
}
}