Skip to main content

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}