acts_next/model/act/
irq.rs1use crate::{Act, Vars};
2use serde::{Deserialize, Serialize};
3
4#[derive(Debug, Default, Clone, Serialize, Deserialize)]
6pub struct Irq {
7 #[serde(default)]
8 pub key: String,
9
10 #[serde(default)]
11 pub tag: String,
12
13 #[serde(default)]
14 pub inputs: Vars,
15
16 #[serde(default)]
17 pub rets: Vars,
18
19 #[serde(default)]
20 pub outputs: Vars,
21}
22
23impl Irq {
24 pub fn new() -> Self {
25 Default::default()
26 }
27
28 pub fn with_tag(mut self, tag: &str) -> Self {
29 self.tag = tag.to_string();
30 self
31 }
32
33 pub fn with_key(mut self, key: &str) -> Self {
34 self.key = key.to_string();
35 self
36 }
37
38 pub fn with_input<T>(mut self, name: &str, value: T) -> Self
39 where
40 T: Serialize + Clone,
41 {
42 self.inputs.set(name, value);
43 self
44 }
45
46 pub fn with_output<T>(mut self, name: &str, value: T) -> Self
47 where
48 T: Serialize + Clone,
49 {
50 self.outputs.set(name, value);
51 self
52 }
53
54 pub fn with_ret<T>(mut self, name: &str, value: T) -> Self
55 where
56 T: Serialize + Clone,
57 {
58 self.rets.set(name, value);
59 self
60 }
61}
62
63impl From<Irq> for Act {
64 fn from(val: Irq) -> Self {
65 Act::irq(|_| val.clone())
66 }
67}