wolfram_serialize_macros/
lib.rs1#![allow(clippy::needless_doctest_main)]
13
14use proc_macro::TokenStream;
15use syn::{parse_macro_input, DeriveInput};
16
17mod deserialize;
18mod failure_derive;
19mod serialize;
20mod shared;
21mod ty_classify;
22
23#[proc_macro_derive(ToWXF, attributes(wolfram))]
25pub fn derive_to_wxf(input: TokenStream) -> TokenStream {
26 let input = parse_macro_input!(input as DeriveInput);
27 serialize::expand(&input)
28 .unwrap_or_else(|err| err.to_compile_error())
29 .into()
30}
31
32#[proc_macro_derive(FromWXF, attributes(wolfram))]
34pub fn derive_from_wxf(input: TokenStream) -> TokenStream {
35 let input = parse_macro_input!(input as DeriveInput);
36 deserialize::expand(&input)
37 .unwrap_or_else(|err| err.to_compile_error())
38 .into()
39}
40
41#[proc_macro_derive(Failure, attributes(wolfram))]
45pub fn derive_failure(input: TokenStream) -> TokenStream {
46 let input = parse_macro_input!(input as DeriveInput);
47 failure_derive::expand(&input)
48 .unwrap_or_else(|err| err.to_compile_error())
49 .into()
50}