servo/nix

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

Homepage:

Size: 4957

Language: Rust

GitHub Committers

UserMost Recent Commit# Commits

Other Committers

UserEmailMost Recent Commit# Commits

README

Rust bindings to *nix APIs

Build Status crates.io

Documentation (Releases)

Documentation (Development)

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<()>;
Usage

To use nix, first add this to your Cargo.toml:

endencies]
= "0.7.0"

Then, add this to your crate root:

rn crate nix;
Contributing

Contributions are very welcome. Please See CONTRIBUTING for additional details.

License

Nix is licensed under the MIT license. See LICENSE for more details.


This work is supported by the National Institutes of Health's National Center for Advancing Translational Sciences, Grant Number U24TR002306. This work is solely the responsibility of the creators and does not necessarily represent the official views of the National Institutes of Health.