gecko-dev/third_party/rust/libudev
Servo VCS Sync be92d942e5 No bug - Revendor rust dependencies 2017-10-24 17:55:24 +00:00
..
examples
src
.cargo-checksum.json No bug - Revendor rust dependencies 2017-10-24 17:55:24 +00:00
.travis.yml
Cargo.toml
LICENSE
README.md

README.md

Libudev

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 libudev as a dependency in Cargo.toml:

[dependencies]
libudev = "0.2"

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

[target.x86_64-unknown-linux-gnu.dependencies]
libudev = "0.2"

Import the libudev crate. The starting point for nearly all libudev functionality is to create a context object.

extern crate libudev;

fn main() {
  let context = libudev::Context::new().unwrap();
  let mut enumerator = libudev::Enumerator::new(&context).unwrap();

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

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

Contributors

License

Copyright © 2015 David Cuddeback

Distributed under the MIT License.