//! Wrappers over `Fn`, `FnMut`, and `FnOnce` that simplify dispatching closures when `alloc` isn't available.
//!
//! Typical closures are confusing, `rustc` treats them as unique even if they're identical.
//! The closure types in `box_closure` are only opaque;
//! `rustc` can't see through them and as long as the signitures match,
//! they're treated as being the same closure.
//!
//! This is effectively what `Box<dyn Fn ... >` does, but without allocating a `Box`.
//! For embedded development, heap allocation is not usually an option, so `box_closure`
//! replaces the need to box closures, instead allowing you to wrap them in `OpaqueFn`,
//! `OpaqueFnMut`, or `OpaqueFnOnce` types to stop `rustc` from complaining about opaque types.
//!
//! By being more opaque, `box_closure` stops opaque type compiler errors when dispatching closures.
pub use OpaqueFn;
pub use OpaqueFnMut;
pub use OpaqueFnOnce;
pub use ;