use mingling::{ macros::{chain, dispatcher, gen_program, pack, r_println, renderer}, parser::Picker, this, }; // Define a struct with Default and Clone derives #[derive(Debug, Default, Clone)] struct Global { name: String, age: i32, } fn main() { let mut program = ThisProgram::new(); // Add a global resource here program.with_resource(Global::default()); program.exec(); } dispatcher!("modify", ResModifyCommand => ResModifyEntry); pack!(DisplayGlobal = ()); #[chain] fn modify(prev: ResModifyEntry) { let (name, age) = Picker::<()>::new(prev.inner) .pick::("--name") .pick::("--age") .unpack_directly(); // Modify the global resource this::().modify_res(|r: &mut Global| { r.name = name; r.age = age }); DisplayGlobal::default() } #[renderer] fn render_global(_prev: DisplayGlobal) { // Read the global resource let global = this::().res_or_default::(); r_println!("Name: {}, Age: {}", global.name, global.age) } gen_program!();