goodnight 0.1.2

A simple crate for executing code upon exit.
Documentation
#![no_std]
extern crate alloc;
use alloc::boxed::Box;

pub struct GoodnightCallback(Option<Box<dyn FnOnce()>>);
impl GoodnightCallback
{
	pub fn new(callback: Box<dyn FnOnce()>) -> Self
	{
		Self(Some(callback))
	}
}

impl Drop for GoodnightCallback
{
	fn drop(&mut self)
	{
		(self.0.take().unwrap())();
	}
}
#[macro_export]
macro_rules! goodnight
{
	($closure:ident) => {
		let _goodnight_callback_whatever = $crate::GoodnightCallback::new(Bow::new($closure));
	};
	(move || $callback:expr) => {
		let close = move || $callback;
		goodnight!(close);
	};
	(|| $callback:expr) => {
		let close = || $callback;
		goodnight!(close);
	};
	($callback:expr) => {
		let close = || $callback;
		goodnight!(close);
	};
	($callback:block) =>
	{
		let close = || $cb;
		goodnight!(close);
	};
}