# vecio
[![Unix Status](https://travis-ci.org/seanmonstar/vecio.svg?branch=master)](https://travis-ci.org/seanmonstar/vecio)
[![Windows status](https://ci.appveyor.com/api/projects/status/kpxw3a297l822sb6?svg=true)](https://ci.appveyor.com/project/seanmonstar/vecio)
Vector IO, scatter/gather, readv, writev
Works on file descriptors on Unix, and sockets on Windows.
## Example
```rust
extern crate vecio;
use vecio::Rawv;
use std::net::TcpStream;
fn main() {
let mut stream = TcpStream::connect("0.0.0.0").unwrap();
stream.writev(&[b"foo", b"bar"]).unwrap();
}
```
## Details
There are 3 traits of import in `vecio`:
- `Rawv`
- `Writev`
- `Readv`
The `Rawv` trait implements `Writev` and `Readv` for any type that implements either `AsRawFd` or `AsRawSocket` (unix and windows).
The `Writev` and `Readv` traits exist so that any type that needs a custom implementation can have one.
In simple cases, just import `vecio::Rawv` will give the methods on the proper types.