#[macro_export]
macro_rules! ice {
($label:ident => $expr:expr) => {{
#[cold]
#[inline(never)]
fn $label<T, F: FnOnce() -> T>(f: F) -> T {
f()
}
$label(|| $expr)
}};
($expr:expr) => {{
let mut closure = core::convert::identity(
#[cold]
#[inline(never)]
|| $expr,
);
closure()
}};
}