#io #read #read-write #alloc #buffer #traits #bare

已删除 bare-io

无标准库环境下的 std::io 的基本功能。分配支持是可选的。

0.2.1 2020年10月11日
0.2.0 2020年10月11日
0.1.1 2020年10月10日
0.1.0 2020年10月10日
0.0.0 2020年10月10日

#12 in #bare

每月下载量28次

Apache-2.0 OR MIT

105KB
1K SLoC

bare-io

Actions Status Documentation

是否想在 no_std 中使用 Cursor?现在你可以做到了。这是 Rust 的 std::io 模块的“分支”,用于 no_std 环境,并且不需要 alloc

该软件包的目的是为在 no_std 环境中构建 I/O 特性提供稳定的接口。当前代码对应于 Rust 1.47.0 的最新稳定 API。它还旨在实现真正的无分配体验,并可选择启用分配支持。

该软件包在 stable 上运行,但功能有限,而在 nightly 上则不受限制,通过添加相关的功能标志来实现。

该软件包默认为 no_std —— 如果需要,你必须选择启用 std

使用方法

[dependencies]
bare-io = "0.2"

添加软件包,使用你通常想要从 std::io 获取的内容,但来自 bare_io

特性

  • std: 为填充类型启用 std 透传,但允许访问新类型
  • alloc: 启用 ReadWrite 特性中需要 alloc 支持的方面(WIP)
  • nightly: 启用仅限 nightly 的功能,例如具有 const 泛型的 BufReaderBufWriter
  • nightly-std: 启用带有仅限 nightly 功能的 std

std::io 的不同之处

  • 没有 std::io::Error,因此我们有自己的副本,没有任何 Os 错误函数
  • IoSlice*_vectored 系列函数未实现。
  • BufReaderBufWriter 现在使用 const 泛型边界数组作为内部缓冲区,因此它们的签名不同。(需要 nightly 功能)

除了某些项可能完全缺失或某些特质中某些函数不可用之外,没有更改函数签名。

限制

  • 由于使用 const 泛型,目前使用缓冲区类型需要 nightly
  • 由于初始化器 API 的原因,使用 copy 或带有 std 支持的缓冲区类型目前需要 nightly

它在哪里使用?

以下所有内容都在进行中,但应该有助于展示如何使用此软件包。

  • fastvlq:带有 u64 类型,并支持无 std 读取器的可变长度
  • byteorder_bare-io:是 byteorder 软件包的私人分支
  • zstd-rs:是 zstd 软件包的私人分支,用于在更复杂的设置中演示 bare-io
  • comde:与 serde 的使用方式类似进行压缩/解压缩

许可证

根据您的选择,许可协议为以下之一


此存储库中的几乎所有代码都是 Rust 语言代码库的副本,仅进行了少量修改。

有关归属信息,请参阅 https://thanks.rust-lang.org/

依赖项

~170–310KB