odra_ir/
instance_item.rs

1use syn::{spanned::Spanned, DeriveInput};
2
3/// Odra module instance definition.
4///
5/// Only a struct can be an instance of Odra module.
6pub struct InstanceItem {
7    ident: syn::Ident,
8    data_struct: syn::DataStruct
9}
10
11impl InstanceItem {
12    pub fn parse(input: DeriveInput) -> Result<Self, syn::Error> {
13        match input.data {
14            syn::Data::Struct(data_struct) => Ok(Self {
15                ident: input.ident,
16                data_struct
17            }),
18            _ => Err(syn::Error::new(
19                input.span(),
20                "Only struct can derive from Instance"
21            ))
22        }
23    }
24
25    pub fn data_struct(&self) -> &syn::DataStruct {
26        &self.data_struct
27    }
28
29    pub fn ident(&self) -> &syn::Ident {
30        &self.ident
31    }
32}