use crate::prelude::*;
#[derive(Debug, Clone, Copy)]
#[must_use = "IO is not evaluated until `IOLike.exec` invoked"]
pub struct Suspend<F>(pub(super) F);
impl<F> Equiv for Suspend<F> where F: F1Once<()>
{
type To = IO<F::Ret>;
}
impl<F> IOLike<F::Ret> for Suspend<F> where F: F1Once<()>
{
fn exec(self) -> F::Ret {
self.0.call1(())
}
}