worktable 0.9.0-alpha9

WorkTable is in-memory storage
Documentation
use indexset::cdc::change::ChangeEvent;
use indexset::core::pair::Pair;

pub fn convert_change_event<T, L1, L2>(ev: ChangeEvent<Pair<T, L1>>) -> ChangeEvent<Pair<T, L2>>
where
    L1: Into<L2>,
{
    match ev {
        ChangeEvent::InsertAt {
            event_id,
            max_value,
            value,
            index,
        } => ChangeEvent::InsertAt {
            event_id,
            max_value: Pair {
                key: max_value.key,
                value: max_value.value.into(),
            },
            value: Pair {
                key: value.key,
                value: value.value.into(),
            },
            index,
        },
        ChangeEvent::RemoveAt {
            event_id,
            max_value,
            value,
            index,
        } => ChangeEvent::RemoveAt {
            event_id,
            max_value: Pair {
                key: max_value.key,
                value: max_value.value.into(),
            },
            value: Pair {
                key: value.key,
                value: value.value.into(),
            },
            index,
        },
        ChangeEvent::CreateNode {
            event_id,
            max_value,
        } => ChangeEvent::CreateNode {
            event_id,
            max_value: Pair {
                key: max_value.key,
                value: max_value.value.into(),
            },
        },
        ChangeEvent::RemoveNode {
            event_id,
            max_value,
        } => ChangeEvent::RemoveNode {
            event_id,
            max_value: Pair {
                key: max_value.key,
                value: max_value.value.into(),
            },
        },
        ChangeEvent::SplitNode {
            event_id,
            max_value,
            split_index,
        } => ChangeEvent::SplitNode {
            event_id,
            max_value: Pair {
                key: max_value.key,
                value: max_value.value.into(),
            },
            split_index,
        },
    }
}

pub fn convert_change_events<T, L1, L2>(
    evs: Vec<ChangeEvent<Pair<T, L1>>>,
) -> Vec<ChangeEvent<Pair<T, L2>>>
where
    L1: Into<L2>,
{
    evs.into_iter().map(convert_change_event).collect()
}