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 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51
use serde_derive::{Deserialize, Serialize}; use crate::model::flow::Flow; use crate::model::function::Function; use crate::model::name::{HasName, Name}; use crate::model::route::{HasRoute, Route}; #[derive(Serialize, Deserialize, Debug, Clone)] #[serde(untagged)] pub enum Process { FlowProcess(Flow), FunctionProcess(Function) } impl Default for Process { fn default() -> Process { Process::FlowProcess(Flow::default()) } } impl HasName for Process { fn name(&self) -> &Name { match self { Process::FlowProcess(flow) => flow.name(), Process::FunctionProcess(function) => function.name() } } fn alias(&self) -> &Name { match self { Process::FlowProcess(flow) => flow.alias(), Process::FunctionProcess(function) => function.alias() } } } impl HasRoute for Process { fn route(&self) -> &Route { match self { Process::FlowProcess(ref flow) => flow.route(), Process::FunctionProcess(ref function) => function.route() } } fn route_mut(&mut self) -> &mut Route { match self { Process::FlowProcess(ref mut flow) => flow.route_mut(), Process::FunctionProcess(ref mut function) => function.route_mut() } } }