iorustembeddedrust-no-std

How do I most idiomatically write an async IO library in Rust for no_std platforms?


I'm building a library to be used on a no_std platform which allows you to do some common network-related IO, such as making HTTP requests or reading from/writing to Websockets.

Now, I would like this library to be a well-behaved citizen so that it can be easily included in other no_std applications. I hence want to package the library by implementing reasonable traits etc. The library would allow me to not have to use alloc, so supporting non-alloc no_std would be ideal.

These are the options I have looked at:

Which async IO abstraction should I use in a no_std environment? If there is no good option right now, which one should I bet on/help out with for the future?


Solution

  • Take a look a look at embassy-rs. There is a very active community. Currently, embassy-rs supports;

    All built on rust async. There are also some really nice macros to generate static buffers for tasks, so you don't need alloc.