For my library, I want to replace async_std by smol, since the former has been deprecated in favor of the latter. This is mostly just a simple translation (different module structure, names etc.), but what I don't know is how to replace async-std's stdin. Anybody got a hint on that?

all 4 comments

sorted by: hot top controversial new old
[–] 10 points 1 year ago (1 child)

The readme for smol has an example for stdout. I assume stdin is the same:

        let mut stdout = Unblock::new(std::io::stdout());
        io::copy(stream, &mut stdout).await?;

And there is more information about how to use it for reading/writing on the Unblock docs.

  • source
  • hideshow 2 child comments
  • [–] 0 points 1 year ago (1 child)

    I've not looked too much into it, but it seems AsyncRead/AsyncBufRead (through IoSafe) is implemented for stdin. So i think you should be able to use it like that.

  • source
  • hideshow 2 child comments
  • [–] [S] 1 point 1 year ago*

    Yeah that looks fine, thanks! It would introduce a new dependency (async_io) though, so I might go with Unblock mentioned above. Let's see what happens when I try to make the switch :)

    (e) Ah I don't think this really works, I'd need to wrap it in an Async, but the docs explicitely mention not to use that with Stdin: https://docs.rs/smol/latest/smol/struct.Async.html#supported-types. Unblock it is then :)

  • source
  • parent