aboutsummaryrefslogtreecommitdiff
path: root/docs
diff options
context:
space:
mode:
author魏曹先生 <1992414357@qq.com>2026-04-27 21:19:56 +0800
committer魏曹先生 <1992414357@qq.com>2026-04-27 21:19:56 +0800
commit2c32196bbc632411d4f6998a506ca262a805a666 (patch)
tree62934fbda52b11bfff984030dbbe52a1926fb4ac /docs
parentad10b82c1e6785cbf88562117b1609905cfeb6dc (diff)
Add global resource system to Program
Diffstat (limited to 'docs')
-rw-r--r--docs/res/changlog_examples/feat_program_res.rs50
1 files changed, 50 insertions, 0 deletions
diff --git a/docs/res/changlog_examples/feat_program_res.rs b/docs/res/changlog_examples/feat_program_res.rs
new file mode 100644
index 0000000..b3533f1
--- /dev/null
+++ b/docs/res/changlog_examples/feat_program_res.rs
@@ -0,0 +1,50 @@
+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::<String>("--name")
+ .pick::<i32>("--age")
+ .unpack_directly();
+
+ // Modify the global resource
+ this::<ThisProgram>().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::<ThisProgram>().res_or_default::<Global>();
+ r_println!("Name: {}, Age: {}", global.name, global.age)
+}
+
+gen_program!();