use crate::{
handle::{BagHandle, ObjectHandle},
macros::all_option_tuples,
types::MQCMD,
};
#[derive(Debug, Default)]
pub struct ExecuteParam<'a> {
pub command: MQCMD,
pub options: Option<&'a BagHandle>,
pub admin_object: Option<&'a ObjectHandle>,
pub reply_object: Option<&'a ObjectHandle>,
}
#[diagnostic::on_unimplemented(
message = "{Self} does not implement `ExecuteOption` so it can't be used as an argument for MQI mqExecute"
)]
pub trait ExecuteOption<'a> {
fn apply_param(&self, param: &mut ExecuteParam<'a>);
}
all_option_tuples!('e, ExecuteOption, ExecuteParam<'e>);