aboutsummaryrefslogtreecommitdiff
path: root/examples/example-hook/src/main.rs
diff options
context:
space:
mode:
author魏曹先生 <1992414357@qq.com>2026-06-24 12:01:38 +0800
committer魏曹先生 <1992414357@qq.com>2026-06-24 12:01:38 +0800
commit1d1baf75a3acb5eb32913a8bdad42bae42844aa2 (patch)
tree5dafbcbce48a5de3c61bba0c7d309e97dd80b1ce /examples/example-hook/src/main.rs
parentaddfbbf0b33a6251605990da73c2de5131766827 (diff)
Redesign hook system with structured info types and ProgramControls
Diffstat (limited to 'examples/example-hook/src/main.rs')
-rw-r--r--examples/example-hook/src/main.rs23
1 files changed, 13 insertions, 10 deletions
diff --git a/examples/example-hook/src/main.rs b/examples/example-hook/src/main.rs
index d6a2dd0..d9a8fd1 100644
--- a/examples/example-hook/src/main.rs
+++ b/examples/example-hook/src/main.rs
@@ -20,7 +20,10 @@
//! Hello, Alice!
//! ```
-use mingling::{hook::ProgramHook, prelude::*};
+use mingling::{
+ hook::{ProgramControlUnit, ProgramHook},
+ prelude::*,
+};
dispatcher!("greet", CMDGreet => EntryGreet);
@@ -30,18 +33,18 @@ fn main() {
// --------- IMPORTANT ---------
program.with_hook(
ProgramHook::<ThisProgram>::empty()
- .on_begin(|| println!("[DEBUG] Program is begin"))
- .on_pre_dispatch(|args| println!("[DEBUG] Pre dispatch: {args:?}"))
- .on_post_dispatch(|c: &_| println!("[DEBUG] Post dispatch: {c:?}"))
- .on_pre_chain(|c: &_, _| {
- println!("[DEBUG] Pre chain: {c}");
+ .on_begin::<_, ()>(|_| println!("[DEBUG] Program is begin"))
+ .on_pre_dispatch(|info| println!("[DEBUG] Pre dispatch: {}", info.arguments.join(" ")))
+ .on_post_dispatch(|info| println!("[DEBUG] Post dispatch: {}", info.entry))
+ .on_pre_chain(|info| {
+ println!("[DEBUG] Pre chain: {}", info.input);
})
- .on_post_chain(|any_output| println!("[DEBUG] Post chain: {}", any_output.member_id))
- .on_finish(|| {
+ .on_post_chain(|info| println!("[DEBUG] Post chain: {}", info.output.member_id))
+ .on_finish(|_| {
println!("[DEBUG] Loop end");
- 0 // Override exit code
+ ProgramControlUnit::OverrideExitCode(0) // Override exit code
})
- .on_pre_render(|c: &_, _| println!("[DEBUG] Pre render: {c}"))
+ .on_pre_render(|info| println!("[DEBUG] Pre render: {}", info.input))
.on_post_render(|_| println!("[DEBUG] Post render")),
);
// --------- IMPORTANT ---------