163次发布

使用旧Rust 2015

新版本 0.2.158 2024年8月19日
0.2.155 2024年5月17日
0.2.153 2024年1月31日
0.2.151 2023年12月10日
0.1.4 2015年3月28日

4 in 操作系统

Download history 3342186/week @ 2024-05-03 3356557/week @ 2024-05-10 3486857/week @ 2024-05-17 3285619/week @ 2024-05-24 3525911/week @ 2024-05-31 3538682/week @ 2024-06-07 3465798/week @ 2024-06-14 3528239/week @ 2024-06-21 3164517/week @ 2024-06-28 3448838/week @ 2024-07-05 3529676/week @ 2024-07-12 3537991/week @ 2024-07-19 3575147/week @ 2024-07-26 3621454/week @ 2024-08-02 3956431/week @ 2024-08-09 3521096/week @ 2024-08-16

15,322,840 monthly downloads
82,152 个crate中使用 (直接使用6,718)

MIT/Apache

4MB
110K SLoC

libc - 平台系统库的原始FFI绑定

GHA Status Cirrus CI Status Latest Version Documentation License

libc 提供了与Rust支持的每个平台上的C代码(或“类似C”代码)交互所需的所有定义。这包括类型定义(例如 c_int)、常量(例如 EINVAL)以及函数头(例如 malloc)。

该crate在crate根目录下导出所有底层平台类型、函数和常量,因此所有项都可通过 libc::foo 访问。所有导出API的类型和值与为libc编译的平台相匹配。

关于此库设计的更详细信息,请参阅其 相关RFC

v0.3 路线图

主分支现在是v0.3,其中包含一些重大更改。

对于v0.2,请在 libc-0.2 分支上提交PR。一旦我们在crates.io上发布v0.3,我们将停止制作新的v0.2版本。

有关详细信息,请参阅 跟踪问题

用法

将以下内容添加到您的 Cargo.toml

[dependencies]
libc = "0.2"

功能

  • std:默认情况下,libc链接到标准库。禁用此功能可以删除此依赖,并能够在#![no_std]crates中使用libc

  • extra_traits:在libc中实现的全部struct都是CopyClone。此功能派生自DebugEqHashPartialEq

  • const-extern-fn:将一些extern fn转换为const extern fn。如果您使用Rust >= 1.62,则此功能默认启用。否则,需要nightly rustc。

  • 已废弃use_std已废弃,并且与std等价。

Rust版本支持

当前支持的最低Rust工具链版本是Rust 1.13.0。(目前libc对最低支持的Rust版本没有任何政策;此类政策正在制定中。)需要较新Rust功能的API仅在新Rust工具链上可用

特性 版本
联合 1.19.0
常量 内存::size_of 1.24.0
repr(align) 1.25.0
extra_traits 1.25.0
核心::ffi::c_void 1.30.0
repr(packed(N)) 1.33.0
cfg(target_vendor) 1.33.0
const-extern-fn 1.62.0

平台支持

您可以在docs.rs上查看特定平台(目标)的文档,选择您想要查看的平台。

请参阅ci/build.sh以查看libc保证为每个Rust工具链构建的平台。GitHub Actions和Cirrus CI中的测试矩阵显示了libc测试运行的平台。

许可证

此项目可使用以下任一许可证:

任选其一。

贡献

我们欢迎所有希望贡献的人。请参阅贡献说明以获取更多信息。

对本项目的任何形式(问题、pull请求等)的贡献都必须遵守Rust的行为准则

除非您明确声明,否则您提交给libc的任何有意贡献,根据Apache-2.0许可证的定义,都应按上述方式双许可,不附加任何额外条款或条件。

依赖关系