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.rs5
1 files changed, 3 insertions, 2 deletions
diff --git a/rust-fsm-dsl/src/lib.rs b/rust-fsm-dsl/src/lib.rs
index d73e0a2..1c9fe36 100644
--- a/rust-fsm-dsl/src/lib.rs
+++ b/rust-fsm-dsl/src/lib.rs
@@ -189,6 +189,7 @@ pub fn state_machine(tokens: TokenStream) -> TokenStream {
})
});
let state_name = state_name.path();
+ let output_generics = output_name.g();
let output_impl = variant::tokenize(&outputs, |outputs| {
output_name.tokenize(|output_name| {
// Many attrs and derives may work incorrectly (or simply not work) for empty enums, so we just skip them
@@ -201,7 +202,7 @@ pub fn state_machine(tokens: TokenStream) -> TokenStream {
quote! {
#attrs
- #visibility enum #output_name {
+ #visibility enum #output_name #output_generics {
#(#outputs),*
}
}
@@ -227,7 +228,7 @@ pub fn state_machine(tokens: TokenStream) -> TokenStream {
impl ::rust_fsm::StateMachine for #state_name {
type Input<'i> = #input_name #input_generics;
- type Output<'o> = #output_name;
+ type Output<'i> = #output_name #output_generics;
fn transition(self, input: Self::Input<'_>) -> ::core::result::Result<
(Self, ::core::option::Option<Self::Output<'_>>),