acts_next/model/act/
pack.rs1use 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}