snedfile - Rust cross-platform sendfile() abstractions

![travis-badge] ![appveyor-badge] ![crates.io-badge] ![docs-badge] ![license-badge]

Natively supported using sendfile() are Linux, Android, MacOS, iOS, FreeBSD and DragonFlyBSD, and every other std-platform using a fallback.

Usage

This library is designed to make transmitting files as easy as possible. If you have a file and a TCP stream, all you have to do is

```rust use snedfile::send_file;

fn transmit(path: impl AsRef, stream: TcpStream) -> io::Result<()> { let file = File::open(path)?;

send_file(&mut file, &mut stream)

} ```

Trivial errors as well as optimally using the native system capabilities are handled by the implementation.

Alternatively, there is a more low-level solution:

```rust use snedfile::send_exact;

fn transmit(path: impl AsRef, stream: TcpStream) -> io::Result<()> { let file = File::open(path)?;

send_exact(&mut file, &mut stream, file.metadata()?.len(), 0)

} ```