2019-07-09 11:46:26 +02:00
|
|
|
[![Azure Status]][Azure] [![Cirrus-CI Status]][Cirrus-CI] [![Latest Version]][crates.io] [![Documentation]][docs.rs] ![License]
|
2015-01-13 16:53:42 +01:00
|
|
|
|
2019-02-13 13:59:17 +01:00
|
|
|
libc - Raw FFI bindings to platforms' system libraries
|
|
|
|
====
|
2015-01-13 16:53:42 +01:00
|
|
|
|
2019-02-13 13:59:17 +01:00
|
|
|
`libc` provides all of the definitions necessary to easily interoperate with C
|
|
|
|
code (or "C-like" code) on each of the platforms that Rust supports. This
|
|
|
|
includes type definitions (e.g. `c_int`), constants (e.g. `EINVAL`) as well as
|
|
|
|
function headers (e.g. `malloc`).
|
2019-02-07 12:03:10 +01:00
|
|
|
|
2019-02-13 13:59:17 +01:00
|
|
|
This crate exports all underlying platform types, functions, and constants under
|
|
|
|
the crate root, so all items are accessible as `libc::foo`. The types and values
|
|
|
|
of all the exported APIs match the platform that libc is compiled for.
|
2019-02-07 12:03:10 +01:00
|
|
|
|
2019-02-13 13:59:17 +01:00
|
|
|
More detailed information about the design of this library can be found in its
|
|
|
|
[associated RFC][rfc].
|
2019-02-07 12:03:10 +01:00
|
|
|
|
2019-02-13 13:59:17 +01:00
|
|
|
[rfc]: https://github.com/rust-lang/rfcs/blob/master/text/1291-promote-libc.md
|
2015-01-13 16:53:42 +01:00
|
|
|
|
2015-10-29 19:54:12 +01:00
|
|
|
## Usage
|
|
|
|
|
2019-02-13 13:59:17 +01:00
|
|
|
Add the following to your `Cargo.toml`:
|
2015-10-29 19:54:12 +01:00
|
|
|
|
|
|
|
```toml
|
|
|
|
[dependencies]
|
2015-11-03 22:23:16 +01:00
|
|
|
libc = "0.2"
|
2015-10-29 19:54:12 +01:00
|
|
|
```
|
|
|
|
|
2019-02-13 13:59:17 +01:00
|
|
|
## Features
|
2015-10-29 19:54:12 +01:00
|
|
|
|
2019-05-24 13:22:03 +02:00
|
|
|
* `std`: by default `libc` links to the standard library. Disable this
|
2019-02-13 13:59:17 +01:00
|
|
|
feature remove this dependency and be able to use `libc` in `#![no_std]`
|
|
|
|
crates.
|
2015-10-29 19:54:12 +01:00
|
|
|
|
2019-02-13 13:59:17 +01:00
|
|
|
* `extra_traits`: all `struct`s implemented in `libc` are `Copy` and `Clone`.
|
2019-02-21 08:46:25 +01:00
|
|
|
This feature derives `Debug`, `Eq`, `Hash`, and `PartialEq`.
|
2016-01-21 01:39:37 +01:00
|
|
|
|
2019-05-24 13:22:03 +02:00
|
|
|
* **deprecated**: `use_std` is deprecated, and is equivalent to `std`.
|
|
|
|
|
2019-02-13 13:59:17 +01:00
|
|
|
## Rust version support
|
2016-01-21 01:39:37 +01:00
|
|
|
|
2019-02-13 13:59:17 +01:00
|
|
|
The minimum supported Rust toolchain version is **Rust 1.13.0** . APIs requiring
|
|
|
|
newer Rust features are only available on newer Rust toolchains:
|
2018-07-30 16:57:55 +02:00
|
|
|
|
2019-02-13 13:59:17 +01:00
|
|
|
| Feature | Version |
|
|
|
|
|----------------------|---------|
|
|
|
|
| `union` | 1.19.0 |
|
|
|
|
| `const mem::size_of` | 1.24.0 |
|
|
|
|
| `repr(align)` | 1.25.0 |
|
|
|
|
| `extra_traits` | 1.25.0 |
|
|
|
|
| `core::ffi::c_void` | 1.30.0 |
|
|
|
|
| `repr(packed(N))` | 1.33.0 |
|
2018-07-30 16:57:55 +02:00
|
|
|
|
2019-02-13 13:59:17 +01:00
|
|
|
## Platform support
|
2019-01-31 03:18:00 +01:00
|
|
|
|
2019-02-21 10:18:06 +01:00
|
|
|
[Platform-specific documentation (master branch)][docs.master].
|
2019-01-31 03:18:00 +01:00
|
|
|
|
2019-02-21 10:18:06 +01:00
|
|
|
See
|
2019-06-28 21:21:44 +02:00
|
|
|
[`ci/build.sh`](https://github.com/rust-lang/libc/blob/master/ci/build.sh)
|
2019-02-21 10:18:06 +01:00
|
|
|
for the platforms on which `libc` is guaranteed to build for each Rust
|
2019-10-17 15:38:54 +02:00
|
|
|
toolchain. The test-matrix at [Azure] and [Cirrus-CI] show the
|
2019-02-21 10:18:06 +01:00
|
|
|
platforms in which `libc` tests are run.
|
2015-10-29 19:54:12 +01:00
|
|
|
|
2019-02-13 13:59:17 +01:00
|
|
|
<div class="platform_docs"></div>
|
2015-10-29 19:54:12 +01:00
|
|
|
|
2019-02-13 13:59:17 +01:00
|
|
|
## License
|
2015-10-29 19:54:12 +01:00
|
|
|
|
2019-02-13 13:59:17 +01:00
|
|
|
This project is licensed under either of
|
2015-10-29 19:54:12 +01:00
|
|
|
|
2019-02-13 13:59:17 +01:00
|
|
|
* [Apache License, Version 2.0](http://www.apache.org/licenses/LICENSE-2.0)
|
|
|
|
([LICENSE-APACHE](LICENSE-APACHE))
|
2015-10-29 19:54:12 +01:00
|
|
|
|
2019-02-13 13:59:17 +01:00
|
|
|
* [MIT License](http://opensource.org/licenses/MIT)
|
|
|
|
([LICENSE-MIT](LICENSE-MIT))
|
2015-10-29 20:28:25 +01:00
|
|
|
|
2019-02-13 13:59:17 +01:00
|
|
|
at your option.
|
|
|
|
|
|
|
|
## Contributing
|
|
|
|
|
|
|
|
We welcome all people who want to contribute. Please see the [contributing
|
|
|
|
instructions] for more information.
|
|
|
|
|
|
|
|
[contributing instructions]: CONTRIBUTING.md
|
|
|
|
|
|
|
|
Contributions in any form (issues, pull requests, etc.) to this project
|
|
|
|
must adhere to Rust's [Code of Conduct].
|
|
|
|
|
|
|
|
[Code of Conduct]: https://www.rust-lang.org/en-US/conduct.html
|
|
|
|
|
|
|
|
Unless you explicitly state otherwise, any contribution intentionally submitted
|
|
|
|
for inclusion in `libc` by you, as defined in the Apache-2.0 license, shall be
|
|
|
|
dual licensed as above, without any additional terms or conditions.
|
2015-10-29 20:28:25 +01:00
|
|
|
|
2019-08-12 10:15:35 +02:00
|
|
|
[Azure Status]: https://dev.azure.com/rust-lang2/libc/_apis/build/status/rust-lang.libc?branchName=master
|
|
|
|
[Azure]: https://dev.azure.com/rust-lang2/libc/_build/latest?definitionId=1&branchName=master
|
2019-02-13 13:59:17 +01:00
|
|
|
[Cirrus-CI]: https://cirrus-ci.com/github/rust-lang/libc
|
|
|
|
[Cirrus-CI Status]: https://api.cirrus-ci.com/github/rust-lang/libc.svg
|
|
|
|
[crates.io]: https://crates.io/crates/libc
|
|
|
|
[Latest Version]: https://img.shields.io/crates/v/libc.svg
|
|
|
|
[Documentation]: https://docs.rs/libc/badge.svg
|
|
|
|
[docs.rs]: https://docs.rs/libc
|
|
|
|
[License]: https://img.shields.io/crates/l/libc.svg
|
2019-02-21 10:18:06 +01:00
|
|
|
[docs.master]: https://rust-lang.github.io/libc/#platform-specific-documentation
|