Finite state machines in rust; bendns fork to add types.
Diffstat (limited to 'rust-fsm-dsl/src/lib.rs')
| -rw-r--r-- | rust-fsm-dsl/src/lib.rs | 16 |
1 files changed, 8 insertions, 8 deletions
diff --git a/rust-fsm-dsl/src/lib.rs b/rust-fsm-dsl/src/lib.rs index 40a487d..d73e0a2 100644 --- a/rust-fsm-dsl/src/lib.rs +++ b/rust-fsm-dsl/src/lib.rs @@ -166,12 +166,12 @@ pub fn state_machine(tokens: TokenStream) -> TokenStream { .replace("Default", "def") .parse() .unwrap(); - + let input_generics = input_name.g(); let input_impl = variant::tokenize(&inputs, |x| { input_name.tokenize(|f| { quote! { #attrs - #visibility enum #f { + #visibility enum #f #input_generics { #(#x),* } } @@ -182,7 +182,7 @@ pub fn state_machine(tokens: TokenStream) -> TokenStream { state_name.tokenize(|f| { quote! { #attrs - #visibility enum #f { + #visibility enum #f { #(#x),* } } @@ -226,12 +226,12 @@ pub fn state_machine(tokens: TokenStream) -> TokenStream { #output_impl impl ::rust_fsm::StateMachine for #state_name { - type Input = #input_name; - type Output = #output_name; + type Input<'i> = #input_name #input_generics; + type Output<'o> = #output_name; - fn transition(self, input: Self::Input) -> ::core::result::Result< - (Self, ::core::option::Option<Self::Output>), - ::rust_fsm::TransitionImpossibleError<Self, Self::Input> + fn transition(self, input: Self::Input<'_>) -> ::core::result::Result< + (Self, ::core::option::Option<Self::Output<'_>>), + ::rust_fsm::TransitionImpossibleError<Self, Self::Input<'_>> > { match (self, input) { #(#transition_cases)* |