Skip to content
/ cntr-nix Public
forked from nix-rust/nix

Rust friendly bindings to *nix APIs (fork with features used in cntr)

License

Notifications You must be signed in to change notification settings

Mic92/cntr-nix

 
 

Repository files navigation

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:

// libc api (unsafe, requires handling return code/errno)
pub unsafe extern fn gethostname(name: *mut c_char, len: size_t) -> c_int;

// nix api (returns a nix::Result<CStr>)
pub fn gethostname<'a>(buffer: &'a mut [u8]) -> Result<&'a CStr>;

Requirements

Rust >= 1.9.0

Usage

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

[dependencies]
nix = "0.8.0"

Then, add this to your crate root:

extern 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.

About

Rust friendly bindings to *nix APIs (fork with features used in cntr)

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages

  • Rust 99.5%
  • Other 0.5%