zio-sendfile
Rust crate to provide a higher level abstraction over Linux's zero-copy I/O syscall:
sendfile. This provides a significantly
faster variant of io::copy(&mut source, &mut dest)
, which only works on Linux -- the platform of
choice for the discerning programmer.
Examples
If you're simply copying a file to a different file descriptor, the copy function can be used:
extern crate zio_sendfile;
let mut source = open.unwrap;
let mut dest = create.unwrap;
let bytes_per_write = 100 * 1024 * 1024;
copy;
Note that the source and destination does not need to be a File
, but can be any type which implements AsRawFd
.
If you need a more elaborate configuration, the builder pattern is possible using the SendFile
type:
extern crate zio_sendfile;
let mut source = open.unwrap;
new
.offset
.send.unwrap;
Each write will update the offset integer stored within the SendFile
, so it can be
used to track the progress of a copy.