impl Unborrow for &'a mut T
This plays nicer with user code that's generic over peripheral traits like `Instance` or `Pin`.
This commit is contained in:
parent
22e6a35598
commit
dc67d2f4a4
@ -24,14 +24,6 @@ macro_rules! peripherals {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
$(#[$cfg])?
|
|
||||||
impl embassy::util::Unborrow for &mut $name {
|
|
||||||
type Target = $name;
|
|
||||||
#[inline]
|
|
||||||
unsafe fn unborrow(self) -> $name {
|
|
||||||
::core::ptr::read(self)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
)*
|
)*
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -95,14 +87,6 @@ macro_rules! impl_unborrow {
|
|||||||
self
|
self
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
impl<'a> ::embassy::util::Unborrow for &'a mut $type {
|
|
||||||
type Target = $type;
|
|
||||||
#[inline]
|
|
||||||
unsafe fn unborrow(self) -> Self::Target {
|
|
||||||
unsafe { ::core::ptr::read(self) }
|
|
||||||
}
|
|
||||||
}
|
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -216,13 +216,6 @@ pub fn interrupt_declare(item: TokenStream) -> TokenStream {
|
|||||||
self
|
self
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
impl ::embassy::util::Unborrow for &mut #name_interrupt {
|
|
||||||
type Target = #name_interrupt;
|
|
||||||
unsafe fn unborrow(self) -> #name_interrupt {
|
|
||||||
::core::ptr::read(self)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
};
|
};
|
||||||
result.into()
|
result.into()
|
||||||
}
|
}
|
||||||
|
@ -22,6 +22,13 @@ pub trait Unborrow {
|
|||||||
unsafe fn unborrow(self) -> Self::Target;
|
unsafe fn unborrow(self) -> Self::Target;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
impl<'a, T: Unborrow> Unborrow for &'a mut T {
|
||||||
|
type Target = T::Target;
|
||||||
|
unsafe fn unborrow(self) -> Self::Target {
|
||||||
|
T::unborrow(core::ptr::read(self))
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
pub trait Steal {
|
pub trait Steal {
|
||||||
unsafe fn steal() -> Self;
|
unsafe fn steal() -> Self;
|
||||||
}
|
}
|
||||||
@ -40,17 +47,6 @@ macro_rules! impl_unborrow_tuples {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
impl<'a, $($t),+> Unborrow for &'a mut($($t),+)
|
|
||||||
where
|
|
||||||
$(
|
|
||||||
$t: Unborrow<Target = $t>
|
|
||||||
),+
|
|
||||||
{
|
|
||||||
type Target = ($($t),+);
|
|
||||||
unsafe fn unborrow(self) -> Self::Target {
|
|
||||||
::core::ptr::read(self)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user