From 1d1baf75a3acb5eb32913a8bdad42bae42844aa2 Mon Sep 17 00:00:00 2001 From: 魏曹先生 <1992414357@qq.com> Date: Wed, 24 Jun 2026 12:01:38 +0800 Subject: Redesign hook system with structured info types and ProgramControls --- mingling/src/setups/exit_code.rs | 11 ++++++++--- mingling/src/setups/repl_basic.rs | 11 ++++++----- 2 files changed, 14 insertions(+), 8 deletions(-) (limited to 'mingling/src/setups') 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::().res_or_default::(); - 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, { fn setup(self, program: &mut Program) { - 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 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) { 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()) } })); } -- cgit