use crate::executor::tasks::{IntoTask, IntoTaskErr, Task}; pub(crate) mod tasks; pub(crate) struct Executor<'a> { task: &'a Task, args: Box<[String]>, output: Option>, } impl<'a> Executor<'a> { pub(crate) fn new(task: impl IntoTask, args: String) -> Result { let task = task.into_task()?; Ok(Self { task: task, args: Box::new([args]), output: None, }) } pub(crate) fn run(&mut self) -> Option<&Result> { self.output = Some((self.task.exec)(&self.args)); self.output.as_ref() } }