I'm trying to establish a channel between two threads to communicate so I'm passing one thread an UnboundedReceiver and inside of that thread I want to check if a message has been received and then act on it. It looks like it has a blanket implementation for TryStream however when I try to call the try_for_each
method on the UnboundedReceiver
I received this error message:
287 | let incoming = recv.try_for_each(|msg| {
| ^^^^^^^^^^^^ method not found in `futures::channel::mpsc::UnboundedReceiver<MaintMsg>`
|
::: /home/.cargo/registry/src/github.com-1ecc6299db9ec823/futures-channel-0.3.6/src/mpsc/mod.rs:148:1
|
148 | pub struct UnboundedReceiver<T> {
| -------------------------------
| |
| doesn't satisfy `_: TryStreamExt`
| doesn't satisfy `_: TryStream`
|
= note: the method `try_for_each` exists but the following trait bounds were not satisfied:
`futures::channel::mpsc::UnboundedReceiver<MaintMsg>: TryStream`
which is required by `futures::channel::mpsc::UnboundedReceiver<MaintMsg>: TryStreamExt`
`&futures::channel::mpsc::UnboundedReceiver<MaintMsg>: TryStream`
which is required by `&futures::channel::mpsc::UnboundedReceiver<MaintMsg>: TryStreamExt`
`&mut futures::channel::mpsc::UnboundedReceiver<MaintMsg>: TryStream`
which is required by `&mut futures::channel::mpsc::UnboundedReceiver<MaintMsg>: TryStreamExt`
I thought this could be a scope issue but this is what I have included:
use futures::{
channel::mpsc::{unbounded, UnboundedSender, UnboundedReceiver},
future, pin_mut,
stream::{TryStream, TryStreamExt},
StreamExt,
};
And lastly this is the actual function where I'm trying to call the try_for_each
method:
async fn check_recv(recv: UnboundedReceiver<MaintMsg>) {
let incoming = recv.try_for_each(|msg| {
println("HELLO");
});
}
Could this be happening because I'm using tokio::spawn
to kick off the thread and it's causing something to not be in scope? I'm really unsure of where to go from here. Potentially might be a version mismatch?