diff options
| author | 魏曹先生 <1992414357@qq.com> | 2026-06-24 12:01:38 +0800 |
|---|---|---|
| committer | 魏曹先生 <1992414357@qq.com> | 2026-06-24 12:01:38 +0800 |
| commit | 1d1baf75a3acb5eb32913a8bdad42bae42844aa2 (patch) | |
| tree | 5dafbcbce48a5de3c61bba0c7d309e97dd80b1ce /mingling/src/setups | |
| parent | addfbbf0b33a6251605990da73c2de5131766827 (diff) | |
Redesign hook system with structured info types and ProgramControls
Diffstat (limited to 'mingling/src/setups')
| -rw-r--r-- | mingling/src/setups/exit_code.rs | 11 | ||||
| -rw-r--r-- | mingling/src/setups/repl_basic.rs | 11 |
2 files changed, 14 insertions, 8 deletions
diff --git a/mingling/src/setups/exit_code.rs b/mingling/src/setups/exit_code.rs index ed8204c..025ed8a 100644 --- a/mingling/src/setups/exit_code.rs +++ b/mingling/src/setups/exit_code.rs @@ -1,6 +1,11 @@ use std::marker::PhantomData; -use mingling_core::{ProgramCollect, hook::ProgramHook, setup::ProgramSetup, this}; +use mingling_core::{ + ProgramCollect, + hook::{ProgramControlUnit, ProgramHook}, + setup::ProgramSetup, + this, +}; use crate::res::ResExitCode; @@ -32,9 +37,9 @@ where program.with_resource(ResExitCode { exit_code: 0 }); // Insert hook to override exit code before program ends - program.with_hook(ProgramHook::empty().on_finish(|| { + program.with_hook(ProgramHook::empty().on_finish(|_| { let this = this::<C>().res_or_default::<ResExitCode>(); - this.exit_code + ProgramControlUnit::OverrideExitCode(this.exit_code) })); } } diff --git a/mingling/src/setups/repl_basic.rs b/mingling/src/setups/repl_basic.rs index 8b9b83f..71a38d2 100644 --- a/mingling/src/setups/repl_basic.rs +++ b/mingling/src/setups/repl_basic.rs @@ -9,7 +9,7 @@ where C: ProgramCollect<Enum = C>, { fn setup(self, program: &mut Program<C>) { - program.with_hook(ProgramHook::empty().on_repl_readline(|| readline().ok())); + program.with_hook(ProgramHook::empty().on_repl_readline(|_| readline().ok())); } } @@ -48,7 +48,7 @@ where print!("{}", PROMPT.get().unwrap()); let _ = std::io::stdout().flush(); } - program.with_hook(ProgramHook::empty().on_repl_pre_readline(print_prompt)); + program.with_hook(ProgramHook::empty().on_repl_pre_readline(|_| print_prompt())); } BasicREPLPromptSetup::Func(f) => { static FUNC: std::sync::OnceLock<fn() -> String> = std::sync::OnceLock::new(); @@ -57,7 +57,8 @@ where print!("{}", FUNC.get().unwrap()()); let _ = std::io::stdout().flush(); } - program.with_hook(ProgramHook::empty().on_repl_pre_readline(print_func_prompt)); + program + .with_hook(ProgramHook::empty().on_repl_pre_readline(|_| print_func_prompt())); } } } @@ -71,8 +72,8 @@ where { fn setup(self, program: &mut Program<C>) { program.with_hook(ProgramHook::empty().on_repl_receive_result(|r| { - if !r.is_empty() { - println!("{}", r.trim()) + if !r.result.is_empty() { + println!("{}", r.result.trim()) } })); } |
