#io-error #stdio #embedded-io #std #read #alloc #read-write

无std core2

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

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 无标准库

Download history 137225/week @ 2024-04-23 121982/week @ 2024-04-30 130478/week @ 2024-05-07 139156/week @ 2024-05-14 134422/week @ 2024-05-21 140870/week @ 2024-05-28 130295/week @ 2024-06-04 138251/week @ 2024-06-11 125558/week @ 2024-06-18 128383/week @ 2024-06-25 127940/week @ 2024-07-02 127444/week @ 2024-07-09 147292/week @ 2024-07-16 155461/week @ 2024-07-23 147162/week @ 2024-07-30 151912/week @ 2024-08-06

625,903 每月下载量
1,047 个Crates中使用了(直接使用45个)

Apache-2.0 OR MIT

130KB
1.5K SLoC

core2

Actions Status Documentation Minimum Supported Rust Version (MSRV)

是否一直想要在no_std中使用CursorError 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支持的ReadWrite特性(进行中)
  • nightly:启用nightly特有的功能,例如具有const泛型缓冲区的BufReaderBufWriter

std::io的差异

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

除了某些 trait 可能完全缺失或某些函数不可用外,没有更改任何函数签名。

限制

  • 由于使用了 const 泛型,目前使用缓冲区类型需要 nightly
  • 由于使用了 initializer API,目前使用 copy 或带有 std 支持的缓冲区类型需要 nightly

在哪里使用?

以下所有内容都是正在进行中的工作,但应该有助于展示如何使用此包。

  • thiserror_core2:使用 core2::error::Error trait 的 thiserror 的分支。

许可证

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


此存储库中的几乎所有代码都是 Rust 语言代码库的副本,略有修改。

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

依赖关系

~110–250KB