我正在构建一个在no_std
平台上使用的库,它允许您执行一些常见的与网络相关的 IO,例如发出 HTTP 请求或读取/写入 Websockets。
现在,我希望这个库成为一个表现良好的公民,以便它可以轻松地包含在其他no_std
应用程序中。因此,我想通过实现合理的特征等来打包库。该库将允许我不必使用alloc
,因此支持非alloc
no_std
将是理想的。
这些是我看过的选项:
embedded_hal
andnb
:这些板条箱的级别非常低(没有像Read
andWrite
或任何更高级别的通用特征)并且异步模型似乎与async/await
genio
//core_io
...:这些根本不支持异步IO。embrio
: 看起来很有趣,但似乎使用它会将我绑定到一个特定的环境,从而使库的可移植性降低。tokio
v0.2.x:我很想使用它,但根本没有no_std
支持。futures::io
v0.3.x:同样,很想使用它,但没有no_std
支持。
我应该在 no_std 环境中使用哪种异步 IO 抽象?如果现在没有好的选择,我应该在未来下注/帮助哪一个?