Skip to content

Latest commit

 

History

History
95 lines (72 loc) · 2.91 KB

README.md

File metadata and controls

95 lines (72 loc) · 2.91 KB

udev

This crate provides a safe wrapper around the native libudev library. It applies the RAII pattern and Rust lifetimes to ensure safe usage of all libudev functionality. The RAII pattern ensures that all acquired resources are released when they're no longer needed, and Rust lifetimes ensure that resources are released in a proper order.

Dependencies

In order to use the libudev crate, you must have a Linux system with the libudev library installed where it can be found by pkg-config. To install libudev on Debian-based Linux distributions, execute the following command:

sudo apt-get install libudev-dev

libudev is a Linux-specific package. It is not available for Windows, OS X, or other operating systems.

Cross-Compiling

The libudev crate can be used when cross-compiling to a foreign target. Details on how to cross-compile libudev are explained in the libudev-sys crate's README.

Usage

Add udev as a dependency in Cargo.toml:

[dependencies]
udev = "^0.9.3"

If you plan to support operating systems other than Linux, you'll need to add udev as a target-specific dependency:

[target.x86_64-unknown-linux-gnu.dependencies]
udev = "^0.9.3"

Import the udev crate.

extern crate udev;

fn main() {
  let mut enumerator = udev::Enumerator::new().unwrap();

  enumerator.match_subsystem("tty").unwrap();

  for device in enumerator.scan_devices().unwrap() {
    println!("found device: {:?}", device.syspath());
  }
}

Thread-safety

The udev-api does not have any thread-safety guarantees, however many implementations are indeed thread-safe. If you are certain the implementations you are targetting and supporting are, you can enable the send-feature to have udev-rs types implement Send:

[dependencies]
udev = { version = "^0.9.3", features = ["send"] }

The even stronger Sync bound can be added with the sync feature.

Contributors

License

Copyright © 2017 Victoria Brekenfeld Copyright © 2015 David Cuddeback

Copyright for portions of the project are held by [David Cuddeback, 2015] as part of the project. All other copyright for the project are held by [Victoria Brekenfeld, 2017].

Distributed under the MIT License.