use std::collections::HashMap; use serde::Deserialize; use crate::supervisor::Task; #[derive(Debug, Deserialize)] #[serde(tag="platform")] #[serde(rename_all="snake_case")] pub enum Node { #[cfg(feature="irc")] Irc(crate::bridge_irc::IrcTask), #[cfg(feature="matrix")] Matrix(crate::bridge_matrix::MatrixTask), #[cfg(feature="discord")] Discord(crate::bridge_discord::DiscordTask), } impl Node { pub fn into_task(self) -> Box { match self { #[cfg(feature="irc")] Node::Irc(t) => Box::new(t), #[cfg(feature="matrix")] Node::Matrix(t) => Box::new(t), #[cfg(feature="discord")] Node::Discord(t) => Box::new(t), } } } #[derive(Debug, Deserialize)] pub struct Config { pub nodes: HashMap, }