ast_struct! { /// Data structure sent to a `proc_macro_derive` macro. #[cfg_attr(docsrs, doc(cfg(feature = "derive")))] pubstruct DeriveInput { pub attrs: Vec<Attribute>, pub vis: Visibility, pub ident: Ident, pub generics: Generics, pub data: Data,
}
}
ast_enum! { /// The storage of a struct, enum or union data structure. /// /// # Syntax tree enum /// /// This type is a [syntax tree enum]. /// /// [syntax tree enum]: crate::expr::Expr#syntax-tree-enums #[cfg_attr(docsrs, doc(cfg(feature = "derive")))] pubenum Data { Struct(DataStruct), Enum(DataEnum),
Union(DataUnion),
}
}
ast_struct! { /// A struct input to a `proc_macro_derive` macro. #[cfg_attr(docsrs, doc(cfg(feature = "derive")))] pubstruct DataStruct { pub struct_token: Token![struct], pub fields: Fields, pub semi_token: Option<Token![;]>,
}
}
ast_struct! { /// An enum input to a `proc_macro_derive` macro. #[cfg_attr(docsrs, doc(cfg(feature = "derive")))] pubstruct DataEnum { pub enum_token: Token![enum], pub brace_token: token::Brace, pub variants: Punctuated<Variant, Token![,]>,
}
}
ast_struct! { /// An untagged union input to a `proc_macro_derive` macro. #[cfg_attr(docsrs, doc(cfg(feature = "derive")))] pubstruct DataUnion { pub union_token: Token![union], pub fields: FieldsNamed,
}
}
let content; let brace = braced!(content in input); let variants = content.parse_terminated(Variant::parse, Token![,])?;
Ok((where_clause, brace, variants))
}
pub(crate) fn data_union(input: ParseStream) -> Result<(Option<WhereClause>, FieldsNamed)> { let where_clause = input.parse()?; let fields = input.parse()?;
Ok((where_clause, fields))
}
}
#[cfg(feature = "printing")] mod printing { usecrate::attr::FilterAttrs; usecrate::data::Fields; usecrate::derive::{Data, DeriveInput}; usecrate::print::TokensOrDefault; use proc_macro2::TokenStream; use quote::ToTokens;
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.