ribir_macros 0.3.0-alpha.3

Ribir is a framework for building modern native/wasm cross-platform user interface applications.
Documentation
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
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))
    }
  }
}