config: &ZkConfigCollector,
) -> Result<Box<dyn Runnable + Send + Sync>, Box<dyn Error>> {
match config.collector_type.as_str() {
#[cfg(feature = "dns")]
"dns" => Ok(Box::new(DNSCollector::new_from(config)?)),
#[cfg(feature = "test")]
"test" => Ok(Box::new(TestCollector::new_from(config)?)),
#[cfg(feature = "twamp-reflector")]
"twamp_reflector" => Ok(Box::new(TWAMPReflectorCollector::new_from(config)?)),
#[cfg(feature = "twamp-sender")]
"twamp_sender" => Ok(Box::new(TWAMPSenderCollector::new_from(config)?)),
_ => Err(format!("Unknown collector: {}", config.collector_type).into()),
}
}
```
посмотри в сторону https://crates.io/crates/enum_dispatch к слову, чтобы избавиться от Box<Dyn>, мб поможет частично
Обсуждают сегодня