1#![recursion_limit = "512"]
3#![forbid(
4 future_incompatible,
5 macro_use_extern_crate,
6 missing_copy_implementations,
7 missing_debug_implementations,
8 nonstandard_style,
9 rust_2018_compatibility,
10 trivial_casts,
11 trivial_numeric_casts,
12 unsafe_code,
13 variant_size_differences
14)]
15#![warn(
16 rust_2018_idioms,
17 single_use_lifetimes,
18 unused_import_braces,
19 unused_lifetimes,
20 unused_qualifications,
21 unused_results,
22 unused
23)]
24
25use crate::machine::Machine;
26use proc_macro::TokenStream;
27use quote::quote;
28use syn::parse_macro_input;
29
30mod event;
31mod initial_state;
32mod machine;
33mod state;
34mod state_transition;
35mod transition;
36
37#[proc_macro]
39pub fn state_machine(input: TokenStream) -> TokenStream {
40 let machines: Machine = parse_macro_input!(input as Machine);
41
42 quote!(#machines).into()
43}