snedfile

Crates.iosnedfile
lib.rssnedfile
version0.1.0
sourcesrc
created_at2019-09-13 16:26:10.172296
updated_at2019-09-13 16:26:10.172296
descriptionCross-platform sendfile() abstractions
homepage
repositoryhttps://github.com/Draphar/snedfile
max_upload_size
id164608
size30,108
(Draphar)

documentation

https://docs.rs/snedfile

README

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

use snedfile::send_file;

fn transmit(path: impl AsRef<Path>, 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:

use snedfile::send_exact;

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

    send_exact(&mut file, &mut stream, file.metadata()?.len(), 0)
}
Commit count: 1

cargo fmt