Skip to content

Lack of a polished common implementations of basic async helpers  #105

Closed
@rylev

Description

@rylev

Brief summary

Alan is building a library but he is having a hard time figuring out how to do certain basic pieces of functionality. For example:

  • How does he drive a collection of futures to completion in parallel?
  • How does he race futures and do something depending on which finishes first?

These bits of functionality require a 3rd party crate? But which one?! futures, futures-util, futures-io? Some functionality he needs seems to be in tokio, but he's not using tokio! Grrrr...

Optional details

  • (Optional) Which character(s) would be the best fit and why?
    • [X ] Alan: the experienced "GC'd language" developer, new to Rust
      • Alan is probably working on a high level bit of business logic and just wants nice helpers for gluing his logic together.
    • Grace: the systems programming expert, new to Rust
    • Niklaus: new programmer from an unconventional background
    • Barbara: the experienced Rust developer
  • (Optional) What are the key points or morals to emphasize?
    • It's a common occurrence that when creating async libraries or applications, basic functionality is spread across many different crates. Even assuming you know these crates exist (which might not be the case for newcomers to async Rust), you often still need to search through all of them to determine which one has the functionality you need.
      • For example, racing multiple futures against one another. The futures crate happens to have futures::select!, but it can often be a bit hard to use. tokio::select! can be nicer but what if you don't want to use the tokio runtime?

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions