Skip to main content

diesel_versioning_derives/
lib.rs

1use proc_macro::TokenStream;
2use proc_macro_error::proc_macro_error;
3use syn::parse_macro_input;
4
5mod model;
6mod versioned;
7
8///
9/// Dervice macro to implement Versioned.
10///
11#[proc_macro_derive(Versioned, attributes(diesel, version))]
12#[proc_macro_error]
13pub fn derive_versioned(input: TokenStream) -> TokenStream {
14    versioned::derive(parse_macro_input!(input), false)
15        .unwrap_or_else(syn::Error::into_compile_error)
16        .into()
17}
18
19///
20/// Dervice macro to implement VersionedAsync.
21///
22#[cfg(feature = "async")]
23#[proc_macro_derive(VersionedAsync, attributes(diesel, version))]
24#[proc_macro_error]
25pub fn derive_versioned_async(input: TokenStream) -> TokenStream {
26    versioned::derive(parse_macro_input!(input), true)
27        .unwrap_or_else(syn::Error::into_compile_error)
28        .into()
29}