use std::ops::Range;
mod seal {
pub trait Seal {}
}
use seal::Seal;
pub trait Run<D = ()>: Seal {
fn run<T: Default>(self, n: T)
where
Range<T>: Iterator;
}
impl<D, F: FnMut() -> D> Seal for F {}
impl<D, F: FnMut() -> D + Seal> Run<D> for F {
fn run<T: Default>(mut self, n: T)
where
Range<T>: Iterator,
{
(T::default()..n).for_each(|_| drop(self()));
}
}