#sendfile #linux #file #zio

zio-sendfile

适用于Linux的零拷贝I/O,支持稳定的rustc版本

3个不稳定版本

使用旧的Rust 2015

0.2.0 2019年1月18日
0.1.1 2019年1月5日
0.1.0 2019年1月5日

MIT许可证

6KB
63 行(不含注释)

zio-sendfile

Rust包,提供对Linux零拷贝I/O系统调用的更高级抽象:sendfile。这提供了一个比io::copy(&mut source, &mut dest)更快的变体,后者仅在Linux上工作——这是有鉴别力的程序员的平台选择。

示例

如果您只是将文件复制到不同的文件描述符,可以使用复制函数

extern crate zio_sendfile;

let mut source = File::open("source_path").unwrap();
let mut dest = File::create("dest_path").unwrap();
let bytes_per_write = 100 * 1024 * 1024;

zio_sendfile::copy(&mut source, &mut dest, bytes_per_write);

请注意,源和目标不需要是File,可以是实现AsRawFd的任何类型。

如果您需要更复杂的配置,可以使用SendFile类型通过构建器模式实现

extern crate zio_sendfile;

let mut source = File::open("source_path").unwrap();
SendFile::new(&mut source, 100 * 1024 * 1024)
    .offset(bytes_to_offset)
    .send(&mut File::create("dest_path").unwrap()).unwrap();

每次写入都会更新存储在SendFile中的偏移量整数,因此它可以用于跟踪复制进度。

依赖关系

~42KB