use std::fmt::Display; use serde::Serialize; #[derive(Clone, Debug, Eq, PartialEq, Serialize)] pub struct ExecCall { pub program: String, pub args: Vec, } impl ExecCall { pub fn new(program: &str, args: &[&str]) -> Self { Self { program: program.to_string(), args: args.iter().map(|&s| s.into()).collect(), } } } impl Display for ExecCall { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { write!(f, "{}", self.program)?; for arg in &self.args { write!(f, " {}", arg)?; } Ok(()) } }