Skip to content

Fork of Rust Nix Repo (2nd copy to fix CI issues)

License

Notifications You must be signed in to change notification settings

posborne/rust-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)
pub fn gethostname(name: &mut [u8]) -> Result<()>;

Requirements

Rust >= 1.7.0

Usage

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

[dependencies]
nix = "0.7.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

Fork of Rust Nix Repo (2nd copy to fix CI issues)

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages