use std::hash::Hash;
mod imp;
pub trait Merge {
fn merge(&mut self, template: &Self);
}
pub trait ShallowMerge {
fn shallow_merge(&mut self, template: &Self);
}
pub trait Combine {
fn combine(&mut self, template: &Self);
}
pub trait MergeCombine {
fn merge_combine(&mut self, template: &Self);
}
pub trait MergeByKey {
type Elem;
fn merge_by_key<F, K>(&mut self, template: &Self, get_key: F)
where
F: FnMut(&Self::Elem) -> K,
K: Hash + Eq;
}
pub trait CombineByKey {
type Elem;
fn combine_by_key<F, K>(&mut self, template: &Self, get_key: F)
where
F: FnMut(&Self::Elem) -> K,
K: Hash + Eq;
}
pub trait MergeCombineByKey {
type Elem;
fn merge_combine_by_key<F, K>(&mut self, template: &Self, get_key: F)
where
F: FnMut(&Self::Elem) -> K,
K: Hash + Eq;
}