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
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
//! This module exposes the [`Cmd`] type, which must be used when sending commands to the [`Component`](crate::component::Component) from the
//! [`AppComponent`](crate::component::AppComponent) after an `Event`.
use crateState;
// -- Command
/// A command defines the "abstract" operation to perform in front of an Event.
/// The command must be passed in the `on` method of the `AppComponent`
/// when calling `perform` method of the `Component`.
/// There is not a default conversion from `Event -> Cmd`, but it must be implmented by the user in the
/// `Component` in a match case.
/// Defines the 4 2D directions a cursor can move.
/// This may be used after a `Arrow::Up` event or if you want something more geeky
/// when using `WASD`
/// Describes specific positions. Mostly used for exact cursor movement.
// -- Command result
/// A command result describes the output of a [`Cmd`] performed on a Component.
/// It reports a "logical" change on the `Component`.
/// The [`AppComponent`](crate::component::AppComponent) then needs to handle this result and return a user defined `Msg` based on the value of the [`CmdResult`].