Skip to main content

acts_next/model/act/
catch.rs

1use crate::Step;
2use serde::{Deserialize, Serialize};
3
4#[derive(Debug, Clone, Default, Serialize, Deserialize)]
5pub struct Catch {
6    #[serde(default)]
7    pub on: Option<String>,
8    #[serde(default)]
9    pub steps: Vec<Step>,
10}
11
12impl Catch {
13    pub fn new() -> Self {
14        Default::default()
15    }
16
17    pub fn with_on(mut self, err: &str) -> Self {
18        self.on = Some(err.to_string());
19        self
20    }
21
22    pub fn with_step(mut self, build: fn(Step) -> Step) -> Self {
23        let step = build(Step::default());
24        self.steps.push(step);
25
26        self
27    }
28}