acts_next/model/act/
pack.rs

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