diff options
Diffstat (limited to 'embassy-hal-internal/src/peripheral.rs')
| -rw-r--r-- | embassy-hal-internal/src/peripheral.rs | 15 |
1 files changed, 12 insertions, 3 deletions
diff --git a/embassy-hal-internal/src/peripheral.rs b/embassy-hal-internal/src/peripheral.rs index f03f41507..0b0f13338 100644 --- a/embassy-hal-internal/src/peripheral.rs +++ b/embassy-hal-internal/src/peripheral.rs | |||
| @@ -1,5 +1,5 @@ | |||
| 1 | use core::marker::PhantomData; | 1 | use core::marker::PhantomData; |
| 2 | use core::ops::Deref; | 2 | use core::ops::{Deref, DerefMut}; |
| 3 | 3 | ||
| 4 | /// An exclusive reference to a peripheral. | 4 | /// An exclusive reference to a peripheral. |
| 5 | /// | 5 | /// |
| @@ -155,7 +155,7 @@ pub trait Peripheral: Sized { | |||
| 155 | } | 155 | } |
| 156 | } | 156 | } |
| 157 | 157 | ||
| 158 | impl<'b, T: Deref> Peripheral for T | 158 | impl<'b, T: DerefMut> Peripheral for T |
| 159 | where | 159 | where |
| 160 | T::Target: Peripheral, | 160 | T::Target: Peripheral, |
| 161 | { | 161 | { |
| @@ -163,6 +163,15 @@ where | |||
| 163 | 163 | ||
| 164 | #[inline] | 164 | #[inline] |
| 165 | unsafe fn clone_unchecked(&self) -> Self::P { | 165 | unsafe fn clone_unchecked(&self) -> Self::P { |
| 166 | self.deref().clone_unchecked() | 166 | T::Target::clone_unchecked(self) |
| 167 | } | ||
| 168 | } | ||
| 169 | |||
| 170 | impl<'b, T: Peripheral> Peripheral for PeripheralRef<'_, T> { | ||
| 171 | type P = T::P; | ||
| 172 | |||
| 173 | #[inline] | ||
| 174 | unsafe fn clone_unchecked(&self) -> Self::P { | ||
| 175 | T::clone_unchecked(self) | ||
| 167 | } | 176 | } |
| 168 | } | 177 | } |
