use rkyv::ptr_meta::DynMetadata;
#[derive(Debug, Hash, PartialEq, Eq, Clone, Copy)]
pub struct VTablePtr(DynMetadata<()>);
impl VTablePtr {
pub const fn new<T: ?Sized>(vtable: DynMetadata<T>) -> Self {
Self(unsafe { core::mem::transmute::<DynMetadata<T>, DynMetadata<()>>(vtable) })
}
pub const unsafe fn cast<T: ?Sized>(self) -> DynMetadata<T> {
unsafe { core::mem::transmute(self.0) }
}
}
unsafe impl Send for VTablePtr {}
unsafe impl Sync for VTablePtr {}