manabrew_engine/keyword/
trait_keywords_change.rs1use super::keyword_collection::KeywordCollection;
6
7pub trait KeywordsChange: KeywordsChangeClone {
10 fn apply_keywords(&self, list: &mut KeywordCollection);
12
13 fn copy(&self) -> Box<dyn KeywordsChange>;
16}
17
18pub trait KeywordsChangeClone {
20 fn clone_box(&self) -> Box<dyn KeywordsChange>;
21}
22
23impl<T: 'static + KeywordsChange + Clone> KeywordsChangeClone for T {
24 fn clone_box(&self) -> Box<dyn KeywordsChange> {
25 Box::new(self.clone())
26 }
27}
28
29impl Clone for Box<dyn KeywordsChange> {
30 fn clone(&self) -> Self {
31 self.clone_box()
32 }
33}