From 0f478d5cf1ff7029e36684607e7d90e60a7cadf9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tom=C3=A1s=20Gr=C3=BCner?= <47506558+MegaRedHand@users.noreply.github.com> Date: Mon, 15 Sep 2025 16:58:04 -0300 Subject: [PATCH 1/3] feat: remove unneeded Clone bounds on GenServer::CaXXMsg --- concurrency/src/tasks/gen_server.rs | 4 ++-- concurrency/src/tasks/time.rs | 3 ++- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/concurrency/src/tasks/gen_server.rs b/concurrency/src/tasks/gen_server.rs index 3c05b04..d6a674b 100644 --- a/concurrency/src/tasks/gen_server.rs +++ b/concurrency/src/tasks/gen_server.rs @@ -135,8 +135,8 @@ pub enum InitResult { } pub trait GenServer: Send + Sized { - type CallMsg: Clone + Send + Sized + Sync; - type CastMsg: Clone + Send + Sized + Sync; + type CallMsg: Send + Sized + Sync; + type CastMsg: Send + Sized + Sync; type OutMsg: Send + Sized; type Error: Debug + Send; diff --git a/concurrency/src/tasks/time.rs b/concurrency/src/tasks/time.rs index 25d19f5..3b4c61f 100644 --- a/concurrency/src/tasks/time.rs +++ b/concurrency/src/tasks/time.rs @@ -32,7 +32,7 @@ where let async_block = pin!(async { rt::sleep(period).await; - let _ = handle.cast(message.clone()).await; + let _ = handle.cast(message).await; }); let _ = select(cancel_conditions, async_block).await; }); @@ -50,6 +50,7 @@ pub fn send_interval( ) -> TimerHandle where T: GenServer + 'static, + T::CastMsg: Clone, { let cancellation_token = CancellationToken::new(); let cloned_token = cancellation_token.clone(); From 0d441cd53e0a7359838f73904619ee39fd2694e4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tom=C3=A1s=20Gr=C3=BCner?= <47506558+MegaRedHand@users.noreply.github.com> Date: Mon, 15 Sep 2025 17:03:37 -0300 Subject: [PATCH 2/3] feat: remove Sync bounds --- concurrency/src/tasks/gen_server.rs | 4 ++-- concurrency/src/tasks/time.rs | 6 ++++-- 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/concurrency/src/tasks/gen_server.rs b/concurrency/src/tasks/gen_server.rs index d6a674b..33b15a7 100644 --- a/concurrency/src/tasks/gen_server.rs +++ b/concurrency/src/tasks/gen_server.rs @@ -135,8 +135,8 @@ pub enum InitResult { } pub trait GenServer: Send + Sized { - type CallMsg: Send + Sized + Sync; - type CastMsg: Send + Sized + Sync; + type CallMsg: Send + Sized; + type CastMsg: Send + Sized; type OutMsg: Send + Sized; type Error: Debug + Send; diff --git a/concurrency/src/tasks/time.rs b/concurrency/src/tasks/time.rs index 3b4c61f..ecf38c4 100644 --- a/concurrency/src/tasks/time.rs +++ b/concurrency/src/tasks/time.rs @@ -62,9 +62,11 @@ where let genserver_cancel_fut = pin!(gen_server_cancellation_token.cancelled()); let cancel_conditions = select(cancel_token_fut, genserver_cancel_fut); - let async_block = pin!(async { + let message_clone = message.clone(); + let handle_reference = &mut handle; + let async_block = pin!(async move { rt::sleep(period).await; - let _ = handle.cast(message.clone()).await; + let _ = handle_reference.cast(message_clone).await; }); let result = select(cancel_conditions, async_block).await; match result { From 9b823806ecb834adfcf426666ae315e3e3acf2a5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tom=C3=A1s=20Gr=C3=BCner?= <47506558+MegaRedHand@users.noreply.github.com> Date: Mon, 15 Sep 2025 17:03:50 -0300 Subject: [PATCH 3/3] feat: remove Sized bounds --- concurrency/src/tasks/gen_server.rs | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/concurrency/src/tasks/gen_server.rs b/concurrency/src/tasks/gen_server.rs index 33b15a7..1f49b07 100644 --- a/concurrency/src/tasks/gen_server.rs +++ b/concurrency/src/tasks/gen_server.rs @@ -135,9 +135,9 @@ pub enum InitResult { } pub trait GenServer: Send + Sized { - type CallMsg: Send + Sized; - type CastMsg: Send + Sized; - type OutMsg: Send + Sized; + type CallMsg: Send; + type CastMsg: Send; + type OutMsg: Send; type Error: Debug + Send; fn start(self) -> GenServerHandle {