educe/trait_handlers/clone/
mod.rs

1mod models;
2
3mod clone_enum;
4mod clone_struct;
5mod clone_union;
6
7use clone_enum::CloneEnumHandler;
8use clone_struct::CloneStructHandler;
9use clone_union::CloneUnionHandler;
10use proc_macro2::TokenStream;
11use syn::{Data, DeriveInput, Meta};
12
13use super::TraitHandler;
14use crate::Trait;
15
16pub struct CloneHandler;
17
18impl TraitHandler for CloneHandler {
19    fn trait_meta_handler(
20        ast: &DeriveInput,
21        tokens: &mut TokenStream,
22        traits: &[Trait],
23        meta: &Meta,
24    ) {
25        match ast.data {
26            Data::Struct(_) => {
27                CloneStructHandler::trait_meta_handler(ast, tokens, traits, meta);
28            },
29            Data::Enum(_) => {
30                CloneEnumHandler::trait_meta_handler(ast, tokens, traits, meta);
31            },
32            Data::Union(_) => {
33                CloneUnionHandler::trait_meta_handler(ast, tokens, traits, meta);
34            },
35        }
36    }
37}