pub struct AnyUart<'d>(/* private fields */);
Expand description
Any UART peripheral.
This struct is a type-erased version of a peripheral singleton. It is useful
for creating arrays of peripherals, or avoiding generics. Peripheral singletons
can be type erased by using their From
implementation.
ⓘ
let any_peripheral = AnyUart::from(peripheral);
Implementations§
Source§impl AnyUart<'_>
impl AnyUart<'_>
Sourcepub unsafe fn clone_unchecked(&self) -> Self
pub unsafe fn clone_unchecked(&self) -> Self
Unsafely clone this peripheral reference.
§Safety
You must ensure that you’re only using one instance of this type at a time.
Sourcepub fn reborrow(&mut self) -> AnyUart<'_>
pub fn reborrow(&mut self) -> AnyUart<'_>
Creates a new peripheral reference with a shorter lifetime.
Use this method if you would like to keep working with the peripheral after you dropped the driver that consumes this.
See Peripheral singleton section for more information.
Sourcepub fn downcast<P>(self) -> Result<P, Self>where
Self: TryInto<P, Error = Self>,
pub fn downcast<P>(self) -> Result<P, Self>where
Self: TryInto<P, Error = Self>,
Attempts to downcast the pin into the underlying peripheral instance.
§Example
// let peri0 = peripherals.PERI0;
// let peri1 = peripherals.PERI1;
let any_peri0 = AnyPeripheral::from(peri0);
let any_peri1 = AnyPeripheral::from(peri1);
let uart0 = any_peri0
.downcast::<PERI0>()
.expect("This downcast succeeds because AnyPeripheral was created from Peri0");
let uart0 = any_peri1
.downcast::<PERI0>()
.expect_err("This AnyPeripheral was created from Peri1, it cannot be downcast to Peri0");