diff --git a/.gitignore b/.gitignore index ea8c4bf..a5ff07f 100644 --- a/.gitignore +++ b/.gitignore @@ -1 +1,8 @@ /target + + +# Added by cargo +# +# already existing elements were commented out + +#/target diff --git a/src/.engine.rs.swp b/src/.engine.rs.swp deleted file mode 100644 index ec956c9..0000000 Binary files a/src/.engine.rs.swp and /dev/null differ diff --git a/src/.main.rs.swp b/src/.main.rs.swp new file mode 100644 index 0000000..c52d682 Binary files /dev/null and b/src/.main.rs.swp differ diff --git a/src/engine.rs b/src/engine.rs index ab92677..a854edf 100644 --- a/src/engine.rs +++ b/src/engine.rs @@ -8,20 +8,20 @@ pub trait InputEngine { fn get(&mut self) -> Vec; } -pub fn build_input_engine(cfg: &Engine) -> impl InputEngine { +pub fn build_input_engine(cfg: &Engine) -> Box { match cfg.name.as_str() { "stdin" => { - return InputEngineStdin{}; + return Box::new(InputEngineStdin{}); }, "kafka" => { - return build_input_engine_kafka(&cfg).unwrap(); + return Box::new(build_input_engine_kafka(&cfg).unwrap()); }, - "udp" => return build_input_engine_udp(&cfg).unwrap(), - "device" => return build_input_engine_device(&cfg).unwrap(), + "udp" => return Box::new(build_input_engine_udp(&cfg).unwrap()), + "device" => return Box::new(build_input_engine_device(&cfg).unwrap()), _ => {}, }; assert!(false); - InputEngineStdin{} + Box::new(InputEngineStdin{}) } struct InputEngineDevice { @@ -191,14 +191,14 @@ pub trait OutputEngine { fn put(&mut self, v: Vec); } -pub fn build_output_engine(cfg: &Engine) -> impl OutputEngine { +pub fn build_output_engine(cfg: &Engine) -> Box { if cfg.name.as_str() == "stdout" { - return OutputEngineStdout{}; + return Box::new(OutputEngineStdout{}); } else if cfg.name.as_str() == "udp" { - return build_output_engine_udp(&cfg).unwrap(); + return Box::new(build_output_engine_udp(&cfg).unwrap()); } assert!(false); - OutputEngineStdout{} + Box::new(OutputEngineStdout{}) } struct OutputEngineStdout {} diff --git a/src/gui.rs b/src/gui.rs index 2c4241a..5669825 100644 --- a/src/gui.rs +++ b/src/gui.rs @@ -7,7 +7,7 @@ use iced::{Alignment, Element, Application, Settings, Subscription, Theme, Comma use crate::engine::OutputEngine; -pub fn main(outputEngine: &impl OutputEngine) -> iced::Result { +pub fn main(outputEngine: &(impl OutputEngine + ?Sized)) -> iced::Result { let settings = Settings{ flags: Flags { //outputEngine: outputEngine, diff --git a/src/main.rs b/src/main.rs index 2d25dc0..3237d89 100644 --- a/src/main.rs +++ b/src/main.rs @@ -2,13 +2,11 @@ mod config; mod engine; mod gui; -use crate::engine::{InputEngine, OutputEngine}; - fn main() { let cfg = config::build_config().unwrap(); if cfg.streams.input.engine.name == "gui" { let mut output_engine = engine::build_output_engine(&cfg.streams.output.engine); - gui::main(&output_engine).unwrap(); + gui::main(&*output_engine).unwrap(); } else { main_cli(cfg); }