async-rs / async-rs/async-std

Is there a nicer way to use `map` and `race`?

Open
#484 5 comments 0 reactions 0 assignees View on GitHub
question/feedback
Dominant language
Rust
Stars
4.1k
Forks
339
PR merge metrics
No merged PRs in 30d

Description

Trying to use `.map` from `futures::future::FutureExt` and `.race` from async_std, the best thing I came up with is

```rust
let interrupt_chan = futures::future::FutureExt::map(receive.recv(), |_| IdleResult::Interrupt);
let idle_chan = futures::future::FutureExt::map(idle_stream.take(1).collect::>(), |_| {
IdleResult::Message
});

let idle_result = interrupt_chan.race(idle_chan).await;
```

but I would like to write

```rust
let interrupt_chan = receive.recv().map(|_| IdleResult::Interrupt);
let idle_chan = idle_stream.take(1).collect::>().map(|_| {
IdleResult::Message
});

let idle_result = interrupt_chan.race(idle_chan).await;
```

I believe this is a general issues with methods provided by `futures` vs `async_std` at the moment

Contributor guide

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.