| 0.2.1 |  | 
|---|---|
| 0.2.0 |  | 
| 0.1.1 |  | 
| 0.1.0 |  | 
| 0.0.0 |  | 
#12 in #bare
每月下载量28次
105KB
 1K  SLoC
bare-io
是否想在 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: 启用 Read和Write特性中需要alloc支持的方面(WIP)
- nightly: 启用仅限 nightly 的功能,例如具有 const 泛型的 BufReader和BufWriter
- nightly-std: 启用带有仅限 nightly 功能的 std
与 std::io 的不同之处
- 没有 std::io::Error,因此我们有自己的副本,没有任何Os错误函数
- IoSlice和- *_vectored系列函数未实现。
- BufReader和- BufWriter现在使用 const 泛型边界数组作为内部缓冲区,因此它们的签名不同。(需要 nightly 功能)
除了某些项可能完全缺失或某些特质中某些函数不可用之外,没有更改函数签名。
限制
- 由于使用 const 泛型,目前使用缓冲区类型需要 nightly。
- 由于初始化器 API 的原因,使用 copy或带有std支持的缓冲区类型目前需要 nightly。
它在哪里使用?
以下所有内容都在进行中,但应该有助于展示如何使用此软件包。
- fastvlq:带有 u64类型,并支持无 std 读取器的可变长度
- byteorder_bare-io:是 byteorder软件包的私人分支
- zstd-rs:是 zstd软件包的私人分支,用于在更复杂的设置中演示bare-io
- comde:与 serde的使用方式类似进行压缩/解压缩
许可证
根据您的选择,许可协议为以下之一
- Apache License,版本 2.0,(LICENSE-APACHE 或 https://apache.ac.cn/licenses/LICENSE-2.0)
- MIT 许可证(LICENSE-MIT 或 https://open-source.org.cn/licenses/MIT)
。
此存储库中的几乎所有代码都是 Rust 语言代码库的副本,仅进行了少量修改。
有关归属信息,请参阅 https://thanks.rust-lang.org/。
依赖项
~170–310KB