Rust event based I/O