releases-comm-central/third_party/rust/libudev
Rob Lemley 94f8f9398c Bug 1860654 - Add vendored Rust deps. rs=me
This is a reproducible commit. Running mach tb-rust vendor again
with mozilla-central and comm-central on the same head revs will
produce the same output.

https://hg.mozilla.org/mozilla-central/rev/55cd203304b8d5343dd941d772085dc25fd278c4
https://hg.mozilla.org/comm-central/rev/8a0750b85f6d85fbf5c2e17a29fbc8112112c374
2023-12-12 14:05:09 -05:00
..
examples Bug 1860654 - Add vendored Rust deps. rs=me 2023-12-12 14:05:09 -05:00
src Bug 1860654 - Add vendored Rust deps. rs=me 2023-12-12 14:05:09 -05:00
.cargo-checksum.json Bug 1860654 - Add vendored Rust deps. rs=me 2023-12-12 14:05:09 -05:00
Cargo.toml Bug 1860654 - Add vendored Rust deps. rs=me 2023-12-12 14:05:09 -05:00
LICENSE Bug 1860654 - Add vendored Rust deps. rs=me 2023-12-12 14:05:09 -05:00
README.md Bug 1860654 - Add vendored Rust deps. rs=me 2023-12-12 14:05:09 -05:00

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.