diff options
| author | littleblack111 <littleblack11111@gmail.com> | 2025-09-21 15:03:21 +0800 |
|---|---|---|
| committer | littleblack111 <littleblack11111@gmail.com> | 2025-09-21 15:03:21 +0800 |
| commit | f155278db783770b4fc44931e9ac0cb14131f981 (patch) | |
| tree | 4f6acf6e9b0944713ded17398168bcdee91859dd /src/executor.rs | |
| parent | 3fa4e33421e3fa94ca63ceb99856f97f9aac741a (diff) | |
finish ctx
Diffstat (limited to 'src/executor.rs')
| -rw-r--r-- | src/executor.rs | 13 |
1 files changed, 7 insertions, 6 deletions
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<N>, +pub struct Executor<'a, 't, N: Copy, T = ()> { + task: &'t Task<N, T>, args: Box<[&'a str]>, + ctx: T, complete_task: Option<CompletedTask<N>>, } -impl<'a, 't, N: Copy> Executor<'a, 't, N> { - pub fn new(task: &'t Task<N>, args: impl IntoIterator<Item = &'a str>) -> Result<Self, IntoTaskErr> { - 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<N, T>, args: impl IntoIterator<Item = &'a str>, ctx: T) -> Result<Self, IntoTaskErr> { + 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() } |
