Soio is a I/O library for Rust.
Document
First, add this to your Cargo.toml
:
toml
[dependencies]
soio = "0.1"
Then, add this to your crate root:
rust
extern crate soio:
Example:
```rust use soio::{Events, Poll, Ready, PollOpt, Token}; use soio::tcp::TcpStream;
use std::net::{TcpListener, SocketAddr};
// Bind a server socket to connect to. let addr: SocketAddr = "127.0.0.1:0".parse().unwrap(); let server = TcpListener::bind(&addr).unwrap();
// Construct a new Poll
handle as well as the Events
we'll store into
let poll = Poll::new().unwrap();
let mut events = Events::with_capacity(1024);
// Connect the stream let stream = TcpStream::connect(&server.local_addr().unwrap()).unwrap();
// Register the stream with Poll
poll.register(&stream, Token(0), Ready::readable() | Ready::writable(), PollOpt::edge()).unwrap();
// Wait for the socket to become ready. This has to happens in a loop to // handle spurious wakeups. loop { poll.poll(&mut events, None).unwrap();
for event in &events {
if event.token() == Token(0) && event.readiness().is_writable() {
// The socket connected (probably, it could still be a spurious
// wakeup)
return;
}
}
} ```