Skip to main content

swf_builders/services/task/
do_task.rs

1use super::*;
2
3// ============== DoTaskDefinitionBuilder ==============
4/// Builder for constructing a do task that executes a sequence of sub-tasks.
5#[derive(Default)]
6pub struct DoTaskDefinitionBuilder {
7    task: DoTaskDefinition,
8}
9
10impl DoTaskDefinitionBuilder {
11    pub fn new() -> Self {
12        Self::default()
13    }
14
15    /// Adds a named sub-task to the do block.
16    pub fn do_<F>(&mut self, name: &str, setup: F) -> &mut Self
17    where
18        F: FnOnce(&mut TaskDefinitionBuilder),
19    {
20        let mut builder = TaskDefinitionBuilder::new();
21        setup(&mut builder);
22        let task = builder.build();
23        self.task.do_.add(name.to_string(), task);
24        self
25    }
26}
27
28impl_task_definition_builder_base!(DoTaskDefinitionBuilder, task, TaskDefinition::Do);