use super::keyword_collection::KeywordCollection;
pub trait KeywordsChange: KeywordsChangeClone {
fn apply_keywords(&self, list: &mut KeywordCollection);
fn copy(&self) -> Box<dyn KeywordsChange>;
}
pub trait KeywordsChangeClone {
fn clone_box(&self) -> Box<dyn KeywordsChange>;
}
impl<T: 'static + KeywordsChange + Clone> KeywordsChangeClone for T {
fn clone_box(&self) -> Box<dyn KeywordsChange> {
Box::new(self.clone())
}
}
impl Clone for Box<dyn KeywordsChange> {
fn clone(&self) -> Self {
self.clone_box()
}
}