1 个不稳定版本

0.1.0 2019年9月13日

#10 in #send-file

Download history 6/week @ 2024-03-27 9/week @ 2024-04-03 5/week @ 2024-05-08 78/week @ 2024-05-15 1/week @ 2024-05-22 3/week @ 2024-05-29 88/week @ 2024-06-05 12/week @ 2024-06-12

每月100次下载

MIT许可协议

24KB
471

snedfile - Rust跨平台sendfile()抽象

travis-badge appveyor-badge crates.io-badge docs-badge license-badge

原生支持使用sendfile()的有Linux、Android、MacOS、iOS、FreeBSD和DragonFlyBSD,其他使用std-平台则使用回退。

用法

这个库旨在使文件传输尽可能简单。如果您有一个文件和一个TCP流,您只需要

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)
}

实现处理了简单错误以及最佳地使用本地系统功能。

或者,还有一个更底层的解决方案

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)
}

依赖项

~43KB