device 0.0.4

A generative engine
use super::*;

pub(crate) trait Callback: FnMut(&mut State, Duration) {
  fn clone_box(&self) -> Box<dyn Callback>;
}

impl<T> Callback for T
where
  T: FnMut(&mut State, Duration) + Clone + 'static,
{
  fn clone_box(&self) -> Box<dyn Callback> {
    Box::new(self.clone())
  }
}

impl Clone for Box<dyn Callback> {
  fn clone(&self) -> Self {
    self.clone_box()
  }
}