sad_machine/
lib.rs

1// quote! macro needs a higher recursion limit
2#![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/// Generate the declaratively described state machine diagram.
38#[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}