use std::{ fs::File, io, thread, time::Duration, }; use futures_util::StreamExt; use inotify::{ Inotify, WatchMask, }; use tempfile::TempDir; #[tokio::main] async fn main() -> Result<(), io::Error> { let inotify = Inotify::init() .expect("Failed to initialize inotify"); let dir = TempDir::new()?; inotify.watches().add(dir.path(), WatchMask::CREATE | WatchMask::MODIFY)?; thread::spawn::<_, Result<(), io::Error>>(move || { loop { File::create(dir.path().join("file"))?; thread::sleep(Duration::from_millis(500)); } }); let mut buffer = [0; 1024]; let mut stream = inotify.into_event_stream(&mut buffer)?; while let Some(event_or_error) = stream.next().await { println!("event: {:?}", event_or_error?); } Ok(()) }