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 或 http://opensource.org/licenses/MIT)
。
此存储库中的几乎所有代码都是 Rust 语言代码库的副本,仅进行了少量修改。
有关归属信息,请参阅 https://thanks.rust-lang.org/。
依赖项
~170–310KB