1 个不稳定版本

0.1.0-alpha2020年7月8日

#1090嵌入式开发

MIT/Apache

9KB
69

not-io

not-io 不是 std::io 模块,但是一个为无std/no-alloc环境提供的非常接近兼容性的接口。当启用std功能时,它将转化为一个shim层,通过一种技巧来确保兼容性。

这种方法的可行性是因为幸运的是,没有 std::io trait有任何 非默认 函数消耗已分配的容器。只有一些扩展方法存在,如果实现者crate没有提供对特性的opt-in,这些方法可能实现得不够优化。

这个crate旨在尽可能接近 stdalloc。没有计划扩展特性,特性将严格遵循 稳定接口。没有例外。例如,no_std 可能会更依赖 EWOULDBLOCK/WouldBlock 来通过外部循环'补充'流。然而,我们 不会 在这里添加任何助手。可以将这些作为官方RFC(如果足够小,则为libs-PR),或者简单地提供一个扩展crate,这是稳定、兼容版本策略(1.0)所允许的。

与类似crate的比较

有几个替代方案。为什么你应该选择这个?简单来说,我没有找到其他任何crate是 稳定兼容 且行为良好的。大多数要么是针对 无std的,要么是扩展。所有其他crate都犯了SemVer/feature兼容性的错误,即在某些配置中允许添加不兼容的实现。

无运行时依赖

特性