1use serde::Serialize;
4use std::collections::BTreeSet;
5
6#[derive(Debug, Serialize)]
9pub(crate) struct ChangeIndex<K: Ord + Serialize> {
10 changes: BTreeSet<K>,
11}
12
13impl<K: Ord + Serialize> Default for ChangeIndex<K> {
14 fn default() -> Self {
17 Self {
18 changes: BTreeSet::new(),
19 }
20 }
21}
22
23impl<K: Ord + Serialize> ChangeIndex<K> {
24 pub(crate) fn add(&mut self, k: K) {
25 self.changes.insert(k);
26 }
27
28 pub(crate) fn drain(&mut self) -> BTreeSet<K> {
29 let mut result: BTreeSet<_> = BTreeSet::new();
30 result.append(&mut self.changes);
31 result
32 }
33}