//! Bus allocation, type-erased handles, and RP235x bus backends.
//!
//! Drivers normally construct buses through `allocator::BusAllocator`. The
//! allocator chooses or reserves startup resources, while the I2C, SPI, and
//! UART handle modules expose stable interfaces that apps and device drivers can
//! store without naming a concrete backend.
/// Startup allocator for hardware peripherals, DMA channels, and PIO state machines.
/// Type-erased async I2C interface.
/// GPIO bit-banged I2C backend.
/// Interrupt-driven RP I2C backend.
/// PIO state-machine allocation and custom-program access.
/// Type-erased blocking and async SPI interface.
/// GPIO bit-banged SPI backend.
/// DMA-backed RP SPI backend.
/// DMA-backed PIO SPI backend.
/// Type-erased async UART interface.
/// GPIO bit-banged UART backend.
/// DMA-backed RP UART backend.
/// PIO UART backend.