acts_next/model/act/
call.rs

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