codama_attributes/
attribute_context.rs1use derive_more::derive::From;
2
3#[derive(Debug, PartialEq, From)]
4pub enum AttributeContext<'a> {
5 File(&'a syn::File),
6 Item(&'a syn::Item),
7 Variant(&'a syn::Variant),
8 Field(&'a syn::Field),
9 ImplItem(&'a syn::ImplItem),
10}
11
12impl<'a> AttributeContext<'a> {
13 pub fn get_fields(&self) -> Option<&'a syn::Fields> {
14 match self {
15 AttributeContext::Item(syn::Item::Struct(syn::ItemStruct { fields, .. })) => {
16 Some(fields)
17 }
18 AttributeContext::Variant(syn::Variant { fields, .. }) => Some(fields),
19 _ => None,
20 }
21 }
22
23 pub fn get_named_fields(&self) -> Option<&'a syn::FieldsNamed> {
24 match self.get_fields() {
25 Some(syn::Fields::Named(fields)) => Some(fields),
26 _ => None,
27 }
28 }
29}