use clack_common::entry::EntryDescriptor;
use std::ptr::NonNull;
use std::sync::Arc;
pub unsafe trait EntryProvider: Send + Sync + 'static {
fn entry_pointer(&self) -> NonNull<EntryDescriptor>;
}
unsafe impl EntryProvider for &'static EntryDescriptor {
#[inline]
fn entry_pointer(&self) -> NonNull<EntryDescriptor> {
(*self).into()
}
}
unsafe impl EntryProvider for Arc<EntryDescriptor> {
#[inline]
fn entry_pointer(&self) -> NonNull<EntryDescriptor> {
self.as_ref().into()
}
}
unsafe impl EntryProvider for Box<EntryDescriptor> {
#[inline]
fn entry_pointer(&self) -> NonNull<EntryDescriptor> {
self.as_ref().into()
}
}