#io #no-std #no-alloc #genio

无std lgio

轻量级、通用、无std IO

1 个不稳定版本

0.1.0 2023年5月30日

#2984Rust模式


push_decode 使用

MITNFA 许可证

44KB
794

轻量级通用IO

错误更少,无std IO特质基于其错误类型进行泛型。

这是一个简化版的 genio,仅包含缓冲特质。

相对于 std 的优势

  • no_std - 不需要操作系统
  • 错误关联类型更灵活
  • 错误更少 - 没有 readwrite 方法,这些方法常被误认为是 read_allwrite_all

相对于 genio 的优势

  • 更简单
  • 处理未初始化字节的 unsafe 更少(目前没有,未来可能会改变)
  • 大多数IO使用都需要一些缓冲
  • 错误更少 - 没有 readwrite 方法,这些方法常被误认为是 read_allwrite_all
  • 没有 FlushError 使得错误处理更简单

目标受众

主要是序列化库及其消费者。也可以用于不需要精确控制 readwrite 调用的简单协议。

可能不应该用于底层。

使用概述

BufRead 特质与 std 中的相似。最大的区别是错误类型和缺少错误易发性的 read 方法。由于它在 std::io::BufReader 和原始 std 类型上实现,因此在大多数情况下,您可以像使用 std::io::BufRead 一样使用它。还有一个额外的优势,即可以静态证明从 &[u8] 读取不会失败(但它可以返回 UnexpectedEnd)。

同样,BufWrite 只是带有错误关联的 std::io::Write,缺少 write 方法。它仍然需要写入是缓冲的或快速的,因为这是大多数编码器需要的。

功能

  • std - 与标准库的集成:实现和适配器
  • alloc - 需要分配的额外功能

MSRV

该软件包旨在保持保守的MSRV,并在提供显著好处时才将其提升至最新Debian稳定版中的版本。目前测试的MSRV为1.41.1(Debian旧稳定版),但由于其简单性,它可能在更低的版本上也能运行。

某些功能可能仅在较新的Rust版本中可用。因此,建议尽可能使用最新的Rust版本。

无运行时依赖

功能