1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
/// Convenience macro for emitting multiple events.
///
/// # Example
///
/// ```rust,ignore
/// fn handle(self, input: Input) -> Result<Emit, CommandError> {
/// Ok(emit![
/// SentFunds {
/// account_id: input.source_account,
/// amount: input.amount,
/// recipient_id: Some(input.dest_account.clone()),
/// },
/// ReceivedFunds {
/// account_id: input.dest_account,
/// amount: input.amount,
/// sender_id: Some(input.source_account),
/// },
/// ])
/// }
/// ```
///
/// Expands to:
///
/// ```rust,ignore
/// Emit::new()
/// .event(SentFunds { ... })
/// .event(ReceivedFunds { ... })
/// ```
/// Creates a tuple of [`FoldRunner`]s from a list of rule functions or closures.
///
/// Each expression is automatically wrapped in [`runner()`], so rules are written
/// as plain functions or closures without any boilerplate.
///
/// # Example
///
/// ```rust,ignore
/// fn rules(input: &Self::Input) -> impl RuleSet {
/// rules!(must_be_open, min_balance(input.amount))
/// }
/// ```