fn expand_pluggable_struct(ecx: &mut ExtCtxt, item: &Item) -> Vec<Annotatable> {
    let ty = ecx.ty_ident(DUMMY_SP, item.ident);

    let mut items = Vec::new();
    items.push(traits::implement_pluggable_fields(ecx, &ty, &item));
    items.push(traits::implement_pluggable(ecx, &ty));
    items
}
/// If the #[pluggable] attribute is on the struct, it is plain old data with no methods.
If the #[pluggable] attribute is on the struct, it is plain old data with no methods.
If the # [ pluggable ] attribute is on the struct it is plain old data with no methods .
fn expand_pluggable_struct(ecx: &mut ExtCtxt, item: &Item) -> Vec<Annotatable> {
    let ty = ecx.ty_ident(DUMMY_SP, item.ident);
    let mut items = Vec::new();
    items.push(traits::implement_pluggable_fields(ecx, &ty, &item));
    items.push(traits::implement_pluggable(ecx, &ty));
    items
}
fn expand_pluggable_struct ( ecx : & mut ExtCtxt , item : & Item ) -> Vec < Annotatable > { let ty = ecx . ty_ident ( DUMMY_SP , item . ident ) ; let mut items = Vec :: new ( ) ; items . push ( traits :: implement_pluggable_fields ( ecx , & ty , & item ) ) ; items . push ( traits :: implement_pluggable ( ecx , & ty ) ) ; items }
If the #[pluggable] attribute is on the struct, it is plain old data with no methods.
If the # [ pluggable ] attribute is on the struct it is plain old data with no methods .
ecx
&mut ExtCtxt
item
&Item
ecx
&mut ExtCtxt
item
&Item