educe/trait_handlers/clone/
mod.rs1mod 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}