From f155278db783770b4fc44931e9ac0cb14131f981 Mon Sep 17 00:00:00 2001 From: littleblack111 Date: Sun, 21 Sep 2025 15:03:21 +0800 Subject: finish ctx --- src/executor.rs | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) (limited to 'src/executor.rs') diff --git a/src/executor.rs b/src/executor.rs index df59734..ec95b18 100644 --- a/src/executor.rs +++ b/src/executor.rs @@ -1,18 +1,19 @@ use crate::tasks::{CompletedTask, IntoTaskErr, Task, TaskOutput}; -pub struct Executor<'a, 't, N: Copy> { - task: &'t Task, +pub struct Executor<'a, 't, N: Copy, T = ()> { + task: &'t Task, args: Box<[&'a str]>, + ctx: T, complete_task: Option>, } -impl<'a, 't, N: Copy> Executor<'a, 't, N> { - pub fn new(task: &'t Task, args: impl IntoIterator) -> Result { - Ok(Self { task: task, args: args.into_iter().collect(), complete_task: None }) +impl<'a, 't, N: Copy, T> Executor<'a, 't, N, T> { + pub fn new(task: &'t Task, args: impl IntoIterator, ctx: T) -> Result { + Ok(Self { task: task, args: args.into_iter().collect(), ctx, complete_task: None }) } pub fn run(&mut self) -> &TaskOutput { - let output = (self.task.exec)(&self.args); + let output = (self.task.exec)(&self.args, &self.ctx); self.complete_task = Some(CompletedTask { name: self.task.name, output: Some(output) }); self.complete_task.as_ref().unwrap().output.as_ref().unwrap() } -- cgit v1.2.3