7 个版本
0.4.0 | 2022年1月29日 |
---|---|
0.3.3 | 2022年1月18日 |
0.3.2 | 2021年9月28日 |
0.3.1 | 2021年7月5日 |
0.0.0 | 2021年2月13日 |
#17 in 无标准库
625,903 每月下载量
在 1,047 个Crates中使用了(直接使用45个)
130KB
1.5K SLoC
core2
是否一直想要在no_std
中使用Cursor
或Error
trait?现在你可以做到了。这是Rust的std
模块在no_std
环境中的“分叉”,并且可以可选地利用alloc
。
该库的目标是为在no_std
环境中构建I/O和错误特性提供一个稳定的接口。当前代码对应于Rust 1.47.0的最新稳定API。它还旨在实现真正的无分配体验,并提供可选的分配支持。
此库在stable
上运行,但功能有限,通过添加相关的功能标志,在nightly
上无限制。
默认情况下,此库为std
—— 使用无默认功能以获取no_std
模式。
用法
[dependencies]
core2 = "0.3"
添加库,使用您通常想要的std::io
中的内容,但使用来自core2::io
的内容,并使用core2::error::Error
代替std::error::Error
。
功能
- std:为填充类型启用
std
透传,但允许访问新类型 - alloc:启用需要
alloc
支持的Read
和Write
特性(进行中) - nightly:启用
nightly
特有的功能,例如具有const泛型缓冲区的BufReader
和BufWriter
与std::io
的差异
- 没有
std::io::Error
,因此我们有自己的副本,没有任何Os
错误函数。 IoSlice
和*_vectored
函数族尚未实现。BufReader
和BufWriter
的签名不同,因为它们现在使用 const 泛型有界数组作为内部缓冲区。(需要 nightly 功能)
除了某些 trait 可能完全缺失或某些函数不可用外,没有更改任何函数签名。
限制
- 由于使用了 const 泛型,目前使用缓冲区类型需要 nightly。
- 由于使用了
initializer
API,目前使用copy
或带有std
支持的缓冲区类型需要 nightly。
在哪里使用?
以下所有内容都是正在进行中的工作,但应该有助于展示如何使用此包。
- thiserror_core2:使用
core2::error::Error
trait 的thiserror
的分支。
许可证
根据您的选择,许可协议为以下之一:
- Apache License,版本 2.0,(LICENSE-APACHE 或 http://www.apache.org/licenses/LICENSE-2.0)
- MIT 许可证(LICENSE-MIT 或 http://opensource.org/licenses/MIT)
。
此存储库中的几乎所有代码都是 Rust 语言代码库的副本,略有修改。
有关归属,请参阅 https://thanks.rust-lang.org/。
依赖关系
~110–250KB