ferroui_dynamic_data/list/list_change_reason.rs
1//! `ListChangeReason` and `ChangeType` (`List/ListChangeReason.cs`, `List/ChangeType.cs`,
2//! `ChangeSetEx.GetChangeType`).
3
4/// The reason of a change of a list (`ListChangeReason`).
5#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash)]
6pub enum ListChangeReason {
7 /// An item was inserted (`Add`).
8 Add,
9 /// Items were inserted together (`AddRange`).
10 AddRange,
11 /// An item replaced the item at its index (`Replace`).
12 Replace,
13 /// An item was removed (`Remove`).
14 Remove,
15 /// Items were removed together (`RemoveRange`).
16 RemoveRange,
17 /// An item asks to be evaluated again (`Refresh`).
18 Refresh,
19 /// An item moved (`Moved`).
20 Moved,
21 /// Every item was removed (`Clear`).
22 Clear,
23}
24
25/// Whether a change is of one item or of a range (`ChangeType`).
26#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash)]
27pub enum ChangeType {
28 Item,
29 Range,
30}
31
32impl ListChangeReason {
33 /// The kind of change of the reason (`GetChangeType`).
34 pub fn change_type(self) -> ChangeType {
35 match self {
36 ListChangeReason::AddRange | ListChangeReason::RemoveRange | ListChangeReason::Clear => ChangeType::Range,
37 _ => ChangeType::Item,
38 }
39 }
40}