I'm trying to use this trait and got an error about pin. I'm not very familiar with it so i'm reaching for help
#[enum_dispatch]
pub trait StreamerTrait {
/// return the number of item moved or an error
async fn process(&mut self, shared_buf: &mut Producer<u8>) -> Result<usize, WriteError>;
}
#[enum_dispatch(StreamerTrait)]
pub enum Streamer {
TcpStreamer,
AdbStreamer,
}
let steamer: Option<Streamer> = None;
let shared_buf: Option<Producer<u8>> = None;
loop {
if let (Some(streamer), Some(shared_buf)) = (&mut steamer, &mut shared_buf) {
match futures::future::select(rx.recv(), streamer.process(shared_buf)) {
..
}
} else {
match rx.recv().await {
..
}
}
}