* I'm struggling with a lifetime issue, does someone here maybe know the magic massaging I need to do so the compiler can reason that those are the same lifetimes? ```rs pub struct An3155Host\<'d, T, M> where T: Instance, M: Mode, { uart: &'d mut Uart\<'d, T, M>, } impl\<'d, T> An3155Host\<'d, T, Async> where T: Instance, { pub fn new (uart: &'d mut Uart\<'d, T, Async>) -> Self { Self { uart } } ... ``` ```rs impl\<'d, F : Fn(u32,&mut \[u8\]) -> Result\<(), FlashingError>, T : Instance> StBootloaderHost\<'d, T, F> { pub fn new( uart: Uart\<'d, T, Async>, size: u32, get\_data: F, ) -> Result\ , FlashingError> { Ok(Self { uart, \_marker: core::marker::PhantomData, get\_data, size, }) } pub async fn flash(&mut self) -> Result<(), FlashingError> { let get_data = &self.get_data; let size = self.size; let mut an3155 = crate::host::an3155::An3155Host::new(&mut self.uart); ```