1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30
use worker::Worker; use std::fmt; use std::sync::Arc; use tokio_executor::Enter; #[derive(Clone)] pub(crate) struct Callback { f: Arc<dyn Fn(&Worker, &mut Enter) + Send + Sync>, } impl Callback { pub fn new<F>(f: F) -> Self where F: Fn(&Worker, &mut Enter) + Send + Sync + 'static, { Callback { f: Arc::new(f) } } pub fn call(&self, worker: &Worker, enter: &mut Enter) { (self.f)(worker, enter) } } impl fmt::Debug for Callback { fn fmt(&self, fmt: &mut fmt::Formatter) -> fmt::Result { write!(fmt, "Fn") } }