I don't know if I'm just doing something horribly wrong, but I feel like I've been fighting this for too long. in essence, I'm trying to generate a driver for an accelerometer device. which I think I have where I want it, but I'm struggling with SpiBus vs SpiDevice. I'm trying to have an init function for the driver where I can pass it an `OutputPin` and a `SpiBus` where then the driver will generate it's `SpiDevice` object that it will use for transactions. Is this just the wrong paradigm to follow? since I'm using embassy as an executor, I'm trying to have it async, and so using the async HAL, but it seems you can't configure a SpiBus and then pass it to a function to use? trying to have a structure where the top level instantiates the pin configurations, and then doles out the configured objects for various tasks to use. where those functions are more functional (acceleration monitoring, telemetry sending, temperature sensing as separate tasks) so it's possible to share a bus across tasks. ``` --> src/main.rs:53:30 | 53 | spawner.spawn(accel_task(spi_bus, chip_select)).unwrap(); | ^^^^^^^ `embedded_hal_async::spi:: SpiBus` cannot be made into an object ``` so you can't pass around a SpiBus object like I want? I feel like I've gotten too used to C allowing me to do whatever, and I'm fighting Rust paradigms more than I should... doesn't help that I only get a few hours to play with Rust on my own, since my job has no rust projects atm.