Revision control
Copy as Markdown
Other Tools
extern crate libudev;
use std::io;
fn main() {
let context = libudev::Context::new().unwrap();
list_devices(&context).unwrap();
}
fn list_devices(context: &libudev::Context) -> io::Result<()> {
let mut enumerator = try!(libudev::Enumerator::new(&context));
for device in try!(enumerator.scan_devices()) {
println!("");
println!("initialized: {:?}", device.is_initialized());
println!(" devnum: {:?}", device.devnum());
println!(" syspath: {:?}", device.syspath());
println!(" devpath: {:?}", device.devpath());
println!(" subsystem: {:?}", device.subsystem());
println!(" sysname: {:?}", device.sysname());
println!(" sysnum: {:?}", device.sysnum());
println!(" devtype: {:?}", device.devtype());
println!(" driver: {:?}", device.driver());
println!(" devnode: {:?}", device.devnode());
if let Some(parent) = device.parent() {
println!(" parent: {:?}", parent.syspath());
}
else {
println!(" parent: None");
}
println!(" [properties]");
for property in device.properties() {
println!(" - {:?} {:?}", property.name(), property.value());
}
println!(" [attributes]");
for attribute in device.attributes() {
println!(" - {:?} {:?}", attribute.name(), attribute.value());
}
}
Ok(())
}