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
/// Fallback `yield_!` macro that produces a clear error when used outside
/// an `#[effectful]` function.
///
/// Inside an `#[effectful]` function, this macro is shadowed by a local
/// `macro_rules!` definition that expands to the correct yielder call.
/// Fallback `invoke!` macro that produces a clear error when used outside
/// an `#[effectful]` function.
///
/// Inside an `#[effectful]` function, this macro is shadowed by a local
/// `macro_rules!` definition that expands to the correct yielder call.
/// Constructs a coproduct type from a list of [`Effect`](crate::Effect) types.
///
/// `Effects![A, B, C]` expands to `Coprod!(A, B, C)` from `frunk_core`.
///
/// Supports the `...Tail` spread syntax to splice in an existing effects type alias,
/// following the same convention as `Coprod!(...Tail)` from frunk:
///
/// ```ignore
/// type Base = Effects![Ask, Log];
/// type Extended = Effects![GetConfig, ...Base];
/// // Equivalent to: Effects![GetConfig, Ask, Log]
/// ```
///
/// The spread must appear as the last argument.
;
=> ;
=> ;
=> ;
}