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}