Name: nix
Owner: Servo
Description: Rust friendly bindings to *nix APIs
Forked from: nix-rust/nix
Created: 2017-01-16 10:48:50.0
Updated: 2018-01-22 18:48:06.0
Pushed: 2017-01-16 04:48:20.0
Size: 4957
Language: Rust
GitHub Committers
User | Most Recent Commit | # Commits |
---|
Other Committers
User | Most Recent Commit | # Commits |
---|
Nix seeks to provide friendly bindings to various *nix platform APIs (Linux, Darwin, …). The goal is to not provide a 100% unified interface, but to unify what can be while still providing platform specific APIs.
For many system APIs, Nix provides a safe alternative to the unsafe APIs exposed by the libc crate. This is done by wrapping the libc functionality with types/abstractions that enforce legal/safe usage.
As an example of what Nix provides, examine the differences between what is exposed by libc and nix for the gethostname system call:
ibc api (unsafe, requires handling return code/errno)
unsafe extern fn gethostname(name: *mut c_char, len: size_t) -> c_int;
ix api (returns a nix::Result)
fn gethostname(name: &mut [u8]) -> Result<()>;
To use nix
, first add this to your Cargo.toml
:
endencies]
= "0.7.0"
Then, add this to your crate root:
rn crate nix;
Contributions are very welcome. Please See CONTRIBUTING for additional details.
Nix is licensed under the MIT license. See LICENSE for more details.