diff --git a/swarm-derive/src/lib.rs b/swarm-derive/src/lib.rs index 8a42220246a..2ac9f978657 100644 --- a/swarm-derive/src/lib.rs +++ b/swarm-derive/src/lib.rs @@ -159,7 +159,9 @@ fn build_struct(ast: &DeriveInput, data_struct: &DataStruct) -> TokenStream { let visibility = &ast.vis; Some(quote! { - #visibility enum #name #impl_generics { + #visibility enum #name #impl_generics + #where_clause + { #(#fields),* } }) diff --git a/swarm-derive/tests/test.rs b/swarm-derive/tests/test.rs index 09048e5e801..d23dd8ed863 100644 --- a/swarm-derive/tests/test.rs +++ b/swarm-derive/tests/test.rs @@ -272,7 +272,7 @@ fn custom_event_mismatching_field_names() { } #[test] -fn where_clause() { +fn bound() { #[allow(dead_code)] #[derive(NetworkBehaviour)] struct Foo { @@ -281,6 +281,19 @@ fn where_clause() { } } +#[test] +fn where_clause() { + #[allow(dead_code)] + #[derive(NetworkBehaviour)] + struct Foo + where + T: Copy + NetworkBehaviour, + { + ping: libp2p::ping::Ping, + bar: T, + } +} + #[test] fn nested_derives_with_import() { #[allow(dead_code)]