use nlink::netlink::{Connection, KobjectUevent};
use tokio_stream::StreamExt;
#[tokio::main]
async fn main() -> nlink::Result<()> {
let conn = Connection::<KobjectUevent>::new()?;
println!("Monitoring device events using Stream API...");
println!("Press Ctrl+C to exit.\n");
let mut events = conn.events();
while let Some(result) = events.next().await {
let event = result?;
println!(
"[{}] {} ({})",
event.action.to_uppercase(),
event.devpath,
event.subsystem
);
if let Some(devname) = event.devname() {
println!(" Device: /dev/{}", devname);
}
if let Some(devtype) = event.devtype() {
println!(" Type: {}", devtype);
}
if let Some(driver) = event.driver() {
println!(" Driver: {}", driver);
}
println!();
}
Ok(())
}