From 98fdee1fc743a3ca216a6e5a1033cf5d505ebb4d Mon Sep 17 00:00:00 2001 From: Max Inden Date: Mon, 15 Aug 2022 14:48:53 +0900 Subject: [PATCH] swarm-derive/: Add where clause of behaviour to generated out event When generating the `OutEvent` for a `NetworkBehaviour`, add the `where` clause of the `NetworkBehaviour` `struct` to the generated `enum`. --- swarm-derive/src/lib.rs | 4 +++- swarm-derive/tests/test.rs | 15 ++++++++++++++- 2 files changed, 17 insertions(+), 2 deletions(-) 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)]