acts_next/model/act/
do.rs

1use crate::{Act, Vars};
2use serde::{Deserialize, Serialize};
3
4/// do an action command
5#[derive(Debug, Default, Clone, Serialize, Deserialize)]
6pub struct Do {
7    /// action name
8    #[serde(default)]
9    pub key: String,
10
11    #[serde(default)]
12    pub inputs: Vars,
13}
14
15impl Do {
16    pub fn new() -> Self {
17        Default::default()
18    }
19    pub fn with_key(mut self, name: &str) -> Self {
20        self.key = name.to_string();
21        self
22    }
23
24    pub fn with_input<T>(mut self, name: &str, value: T) -> Self
25    where
26        T: Serialize + Clone,
27    {
28        self.inputs.set(name, value);
29        self
30    }
31}
32
33impl From<Do> for Act {
34    fn from(val: Do) -> Self {
35        Act::cmd(|_| val.clone())
36    }
37}