Thanks to visit codestin.com
Credit goes to lib.rs

#glib #udev #ffi

gudev

Rust API for gudev, the glib support library for libudev

17 breaking releases

0.18.0 Aug 1, 2025
0.17.0 Nov 24, 2024
0.16.0 Mar 17, 2024
0.15.0 Aug 3, 2023
0.1.1 Nov 30, 2016

#774 in Unix APIs


Used in gnome-egpu

MIT license

47KB
1K SLoC

Rust bindings for the gudev library.

Libgudev is a library providing GObject bindings for libudev.

Usage

Add the following to your Cargo.toml:

[dependencies]
gudev = "0.12"

Next:

use gudev::prelude::*;
use gudev::Client;
use gudev::Device;

fn main() {
    // Get a list of all block devices
    let devices = Client::new(&[]).query_by_subsystem(Some("block"));

    for device in devices {
        print_device(&device);
    }
}

fn print_device(device: &Device) {
    println!(
        "{} (subsystem={}, sysname={}, devtype={})",
        device.sysfs_path().unwrap_or_else(|| "---".into()),
        device.subsystem().unwrap_or_else(|| "---".into()),
        device.device_file().unwrap_or_else(|| "---".into()),
        device.devtype().unwrap_or_else(|| "---".into()),
    );
}

gudev

gudev is a crate that provide Rust idiomatic bindings for GUDev.

It follows the release of glib-rs.

To use in your project, just add gudev = "^0.11.0" to your Cargo.toml.

Please file issues at:

https://github.com/hfiguiere/gudev-rs/

The latest autogenerated online documentation is at:

https://docs.rs/gudev/latest/gudev/

Dependencies

~6.5MB
~146K SLoC