ribir_macros 0.4.0-alpha.2

A non-intrusive declarative GUI framework, to build modern native/wasm cross-platform applications.
Documentation
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
use syn::{spanned::Spanned, Data};

pub fn data_struct_unwrap<'a>(
  data: &'a mut syn::Data, derive_trait: &'static str,
) -> syn::Result<&'a mut syn::DataStruct> {
  match data {
    Data::Struct(stt) => Ok(stt),
    Data::Enum(e) => {
      let err_str = format!("`{derive_trait}` not support for Enum");
      Err(syn::Error::new(e.enum_token.span(), err_str))
    }
    Data::Union(u) => {
      let err_str = format!("`{derive_trait}` not support for Union");
      Err(syn::Error::new(u.union_token.span(), err_str))
    }
  }
}