From 2ab9a07b64d4badb3671ed5065c520ff9bb83038 Mon Sep 17 00:00:00 2001 From: Sam Lakerveld Date: Tue, 8 Aug 2023 11:22:01 +0200 Subject: [PATCH] embassy-sync: manual Copy impls for channel and pipe --- embassy-sync/src/channel.rs | 12 ++++++++---- embassy-sync/src/pipe.rs | 6 ++++-- 2 files changed, 12 insertions(+), 6 deletions(-) diff --git a/embassy-sync/src/channel.rs b/embassy-sync/src/channel.rs index f421af39..d6f36f53 100644 --- a/embassy-sync/src/channel.rs +++ b/embassy-sync/src/channel.rs @@ -30,7 +30,6 @@ use crate::blocking_mutex::Mutex; use crate::waitqueue::WakerRegistration; /// Send-only access to a [`Channel`]. -#[derive(Copy)] pub struct Sender<'ch, M, T, const N: usize> where M: RawMutex, @@ -47,6 +46,8 @@ where } } +impl<'ch, M, T, const N: usize> Copy for Sender<'ch, M, T, N> where M: RawMutex {} + impl<'ch, M, T, const N: usize> Sender<'ch, M, T, N> where M: RawMutex, @@ -67,7 +68,6 @@ where } /// Send-only access to a [`Channel`] without knowing channel size. -#[derive(Copy)] pub struct DynamicSender<'ch, T> { channel: &'ch dyn DynamicChannel, } @@ -78,6 +78,8 @@ impl<'ch, T> Clone for DynamicSender<'ch, T> { } } +impl<'ch, T> Copy for DynamicSender<'ch, T> {} + impl<'ch, M, T, const N: usize> From> for DynamicSender<'ch, T> where M: RawMutex, @@ -107,7 +109,6 @@ impl<'ch, T> DynamicSender<'ch, T> { } /// Receive-only access to a [`Channel`]. -#[derive(Copy)] pub struct Receiver<'ch, M, T, const N: usize> where M: RawMutex, @@ -124,6 +125,8 @@ where } } +impl<'ch, M, T, const N: usize> Copy for Receiver<'ch, M, T, N> where M: RawMutex {} + impl<'ch, M, T, const N: usize> Receiver<'ch, M, T, N> where M: RawMutex, @@ -144,7 +147,6 @@ where } /// Receive-only access to a [`Channel`] without knowing channel size. -#[derive(Copy)] pub struct DynamicReceiver<'ch, T> { channel: &'ch dyn DynamicChannel, } @@ -155,6 +157,8 @@ impl<'ch, T> Clone for DynamicReceiver<'ch, T> { } } +impl<'ch, T> Copy for DynamicReceiver<'ch, T> {} + impl<'ch, T> DynamicReceiver<'ch, T> { /// Receive the next value. /// diff --git a/embassy-sync/src/pipe.rs b/embassy-sync/src/pipe.rs index 6e3e77b4..21d451ea 100644 --- a/embassy-sync/src/pipe.rs +++ b/embassy-sync/src/pipe.rs @@ -11,7 +11,6 @@ use crate::ring_buffer::RingBuffer; use crate::waitqueue::WakerRegistration; /// Write-only access to a [`Pipe`]. -#[derive(Copy)] pub struct Writer<'p, M, const N: usize> where M: RawMutex, @@ -28,6 +27,8 @@ where } } +impl<'p, M, const N: usize> Copy for Writer<'p, M, N> where M: RawMutex {} + impl<'p, M, const N: usize> Writer<'p, M, N> where M: RawMutex, @@ -74,7 +75,6 @@ where impl<'p, M, const N: usize> Unpin for WriteFuture<'p, M, N> where M: RawMutex {} /// Read-only access to a [`Pipe`]. -#[derive(Copy)] pub struct Reader<'p, M, const N: usize> where M: RawMutex, @@ -91,6 +91,8 @@ where } } +impl<'p, M, const N: usize> Copy for Reader<'p, M, N> where M: RawMutex {} + impl<'p, M, const N: usize> Reader<'p, M, N> where M: RawMutex,