cdrs_helpers_derive_temp/
lib.rs1extern crate proc_macro;
5#[macro_use]
6extern crate quote;
7extern crate rand;
8extern crate syn;
9
10mod common;
11mod into_cdrs_value;
12mod try_from_row;
13mod try_from_udt;
14
15use proc_macro::TokenStream;
16use into_cdrs_value::impl_into_cdrs_value;
17use try_from_row::impl_try_from_row;
18use try_from_udt::impl_try_from_udt;
19
20#[proc_macro_derive(IntoCDRSValue)]
21pub fn into_cdrs_value(input: TokenStream) -> TokenStream {
22 let s = input.to_string();
24
25 let ast = syn::parse_derive_input(&s).unwrap();
27
28 let gen = impl_into_cdrs_value(&ast);
30
31 gen.parse().unwrap()
33}
34
35#[proc_macro_derive(TryFromRow)]
36pub fn try_from_row(input: TokenStream) -> TokenStream {
37 let s = input.to_string();
39
40 let ast = syn::parse_derive_input(&s).unwrap();
42
43 let gen = impl_try_from_row(&ast);
45
46 gen.parse().unwrap()
48}
49
50#[proc_macro_derive(TryFromUDT)]
51pub fn try_from_udt(input: TokenStream) -> TokenStream {
52 let s = input.to_string();
54
55 let ast = syn::parse_derive_input(&s).unwrap();
57
58 let gen = impl_try_from_udt(&ast);
60
61 gen.parse().unwrap()
63}