3个不稳定版本
使用旧的Rust 2015
0.2.0 | 2019年1月18日 |
---|---|
0.1.1 | 2019年1月5日 |
0.1.0 | 2019年1月5日 |
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