Skip to content

Susurrus/libudev-rs

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

25 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

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.1.1"

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.1.1"

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());
  }
}

License

Copyright © 2015 David Cuddeback

Distributed under the MIT License.

About

Rust wrapper for libudev

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages

  • Rust 100.0%