1 个不稳定版本
0.1.0-alpha | 2020年7月8日 |
---|
#1090 在 嵌入式开发
9KB
69 行
not-io
not-io 不是 std::io
模块,但是一个为无std/no-alloc环境提供的非常接近兼容性的接口。当启用std功能时,它将转化为一个shim层,通过一种技巧来确保兼容性。
这种方法的可行性是因为幸运的是,没有 std::io
trait有任何 非默认 函数消耗已分配的容器。只有一些扩展方法存在,如果实现者crate没有提供对特性的opt-in,这些方法可能实现得不够优化。
这个crate旨在尽可能接近 std
和 alloc
。没有计划扩展特性,特性将严格遵循 尾 稳定接口。没有例外。例如,no_std
可能会更依赖 EWOULDBLOCK
/WouldBlock
来通过外部循环'补充'流。然而,我们 不会 在这里添加任何助手。可以将这些作为官方RFC(如果足够小,则为libs-PR),或者简单地提供一个扩展crate,这是稳定、兼容版本策略(1.0
)所允许的。
与类似crate的比较
有几个替代方案。为什么你应该选择这个?简单来说,我没有找到其他任何crate是 稳定、兼容 且行为良好的。大多数要么是针对 纯 无std的,要么是扩展。所有其他crate都犯了SemVer/feature兼容性的错误,即在某些配置中允许添加不兼容的实现。