diff --git a/embassy-nrf/src/gpio.rs b/embassy-nrf/src/gpio.rs index 2cdb685d3..fed1ae049 100644 --- a/embassy-nrf/src/gpio.rs +++ b/embassy-nrf/src/gpio.rs @@ -331,7 +331,7 @@ pub(crate) mod sealed { pub trait OptionalPin {} } -pub trait Pin: sealed::Pin + Sized { +pub trait Pin: Unborrow + sealed::Pin + Sized { /// Number of the pin within the port (0..31) #[inline] fn pin(&self) -> u8 { @@ -435,7 +435,7 @@ fn init_output(pin: &T, drive: OutputDrive) { // ==================== -pub trait OptionalPin: sealed::OptionalPin + Sized { +pub trait OptionalPin: Unborrow + sealed::OptionalPin + Sized { type Pin: Pin; fn pin(&self) -> Option<&Self::Pin>; fn pin_mut(&mut self) -> Option<&mut Self::Pin>; diff --git a/embassy-nrf/src/pwm.rs b/embassy-nrf/src/pwm.rs index 4f500d722..34c31e3bb 100644 --- a/embassy-nrf/src/pwm.rs +++ b/embassy-nrf/src/pwm.rs @@ -211,7 +211,7 @@ pub(crate) mod sealed { } } -pub trait Instance: sealed::Instance + 'static { +pub trait Instance: Unborrow + sealed::Instance + 'static { type Interrupt: Interrupt; } diff --git a/embassy-nrf/src/qspi.rs b/embassy-nrf/src/qspi.rs index d75070220..db6b653e7 100644 --- a/embassy-nrf/src/qspi.rs +++ b/embassy-nrf/src/qspi.rs @@ -383,7 +383,7 @@ pub(crate) mod sealed { } } -pub trait Instance: sealed::Instance + 'static { +pub trait Instance: Unborrow + sealed::Instance + 'static { type Interrupt: Interrupt; } diff --git a/embassy-nrf/src/rtc.rs b/embassy-nrf/src/rtc.rs index dc0e3ceb6..99b6c099d 100644 --- a/embassy-nrf/src/rtc.rs +++ b/embassy-nrf/src/rtc.rs @@ -3,7 +3,7 @@ use core::sync::atomic::{compiler_fence, AtomicU32, Ordering}; use critical_section::CriticalSection; use embassy::interrupt::InterruptExt; use embassy::time::Clock; -use embassy::util::CriticalSectionMutex as Mutex; +use embassy::util::{CriticalSectionMutex as Mutex, Unborrow}; use crate::interrupt::Interrupt; use crate::pac; @@ -283,7 +283,7 @@ macro_rules! impl_instance { } /// Implemented by all RTC instances. -pub trait Instance: sealed::Instance + 'static { +pub trait Instance: Unborrow + sealed::Instance + 'static { /// The interrupt associated with this RTC instance. type Interrupt: Interrupt; } diff --git a/embassy-nrf/src/spim.rs b/embassy-nrf/src/spim.rs index 1fb3d441b..0703836b9 100644 --- a/embassy-nrf/src/spim.rs +++ b/embassy-nrf/src/spim.rs @@ -349,7 +349,7 @@ pub(crate) mod sealed { } } -pub trait Instance: sealed::Instance + 'static { +pub trait Instance: Unborrow + sealed::Instance + 'static { type Interrupt: Interrupt; } diff --git a/embassy-nrf/src/timer.rs b/embassy-nrf/src/timer.rs index 69d620b48..2490bfd93 100644 --- a/embassy-nrf/src/timer.rs +++ b/embassy-nrf/src/timer.rs @@ -1,6 +1,7 @@ #![macro_use] use embassy::interrupt::Interrupt; +use embassy::util::Unborrow; use crate::pac; @@ -13,7 +14,7 @@ pub(crate) mod sealed { pub trait ExtendedInstance {} } -pub trait Instance: sealed::Instance + 'static { +pub trait Instance: Unborrow + sealed::Instance + 'static { type Interrupt: Interrupt; } pub trait ExtendedInstance: Instance + sealed::ExtendedInstance {} diff --git a/embassy-nrf/src/twim.rs b/embassy-nrf/src/twim.rs index cbaf97dff..3e0fbc3d0 100644 --- a/embassy-nrf/src/twim.rs +++ b/embassy-nrf/src/twim.rs @@ -509,7 +509,7 @@ pub(crate) mod sealed { } } -pub trait Instance: sealed::Instance + 'static { +pub trait Instance: Unborrow + sealed::Instance + 'static { type Interrupt: Interrupt; } diff --git a/embassy-nrf/src/uarte.rs b/embassy-nrf/src/uarte.rs index 7581f7a8b..494110bee 100644 --- a/embassy-nrf/src/uarte.rs +++ b/embassy-nrf/src/uarte.rs @@ -469,7 +469,7 @@ pub(crate) mod sealed { } } -pub trait Instance: sealed::Instance + 'static { +pub trait Instance: Unborrow + sealed::Instance + 'static { type Interrupt: Interrupt; }