типа enum CollectorConfig. Для того, чтобы сделать конфиг из коллектора получается, нужно два матча сделать - сначала найти тип конфига и по нему достать тип коллектора, потом дернуть Collector::try_from(zk_config). Но необходимые данные для коллетора лежат в enum, Сейчас generic'ом делаю:
```
impl<TCfg> Collector<TCfg>
where
TCfg: Configurable + Clone,
{
pub fn new_from(zk: &ZkConfigCollector, c: TCfg) -> Result<Self, Box<dyn Error>> {
let mut config = c.clone(); // second clone for a while
config.prepare()?;
Ok(Self {
id: zk.id.clone(),
interval: zk.interval,
config: c,
})
}
}
```
но вот если убрать второй параметр - придется match внутри делать и generic сделать не получится 😕
а запихнуть ассоц.тип в TCfg не пробовал? К слову в расте не принято все генерики с T именовать бтв
Обсуждают сегодня