/// A trait that aggregates information about hot-reloadable functions.
///
/// This is implemented for macro-generated synthetic types. The `Self` type
/// has little meaning.
///
/// # Safety
///
/// [`Self::Ptr`] must be a function pointer.
pub unsafe
/// A trait implemented for types that might be function pointers.
///
/// This is primarily used to aggregate and enforce the bounds we care about.
///
/// Ideally we'd use [`core::marker::FnPtr`] (if something like it is ever
/// stabilized).