compris/normal/merge/
mode.rs

1//
2// MergeMode
3//
4
5/// Merge mode.
6#[derive(Debug, Default)]
7pub struct MergeMode {
8    /// List merge mode.
9    pub list: ListMergeMode,
10
11    /// Map merge mode.
12    pub map: MapMergeMode,
13}
14
15//
16// ListMergeMode
17//
18
19/// List merge mode.
20#[derive(Clone, Copy, Debug, Default, Eq, PartialEq)]
21pub enum ListMergeMode {
22    /// Append all items.
23    #[default]
24    Append,
25
26    /// Skip items that are already contained (treat like a set).
27    SkipExisting,
28
29    /// Fail on items that are already contained (treat like a set).
30    FailExisting,
31
32    /// Replace lists if they are not equal.
33    Replace,
34}
35
36//
37// MapMergeMode
38//
39
40/// Map merge mode.
41#[derive(Clone, Copy, Debug, Default, Eq, PartialEq)]
42pub enum MapMergeMode {
43    /// Override existing keys.
44    #[default]
45    OverrideExisting,
46
47    /// Fail on existing keys.
48    FailExisting,
49}