#message #identifier #error #errno #protocols #operation

errno-codes

来自各种操作系统和架构的错误信息编码

1 个不稳定版本

使用旧 Rust 2015

0.1.0 2018年5月26日

#11#errno


被用于 errno-codes-tool

MIT/Apache

1MB
5K SLoC

Build Status crates.io MIT/Apache 2.0

errno-codes

Rust 库,用于处理来自不同操作系统和/或 CPU 架构的网络上的 errno 代码。

在 docs.rs 上的文档

为什么?

errno 是处理许多操作系统标准库中错误的标准方式。不幸的是,很少的 errno 常量标识符是标准化的,并且许多具有相同含义的 errno 值在不同的操作系统间使用不同的数值常量。

在 Linux 上,某些 CPU 架构可能定义自己的数值常量(参见 $KERNEL_SRC/arch/$ARCH/include/uapi/asm/errno.h),这与大多数其他架构使用的常用值不同(参见 $KERNEL_SRC/include/uapi/asm-generic/errno*.h)。这看起来是为了与这些 CPU 架构的专有 Unix 兼容而做的源代码级别的兼容。

尽管存在兼容性问题,原始的 errno 代码有时在网络协议中使用。这个库简化了与这类协议的工作。

已知的 errno 代码

以下操作系统的头文件自动生成常量和映射的源代码

  • Linux,4.16 内核所知的所有架构
  • Windows (MinGW)

用法

将此添加到您的 Cargo.toml 中

[dependencies]
errno-codes = "0.1"

参见 examples/ 目录和 errno-codes-tool 软件包以获取用法示例。

依赖项

~0.5–1.2MB
~26K SLoC