6 releases (1 stable)

1.0.0 May 18, 2024
0.4.0 Apr 29, 2018
0.3.0 Aug 3, 2017
0.2.0 May 20, 2017
0.1.0 Jan 31, 2016

#116 in Asynchronous

Download history 555/week @ 2024-08-15 987/week @ 2024-08-22 354/week @ 2024-08-29 641/week @ 2024-09-05 1295/week @ 2024-09-12 1100/week @ 2024-09-19 213/week @ 2024-09-26 361/week @ 2024-10-03 857/week @ 2024-10-10 250/week @ 2024-10-17 569/week @ 2024-10-24 463/week @ 2024-10-31 233/week @ 2024-11-07 360/week @ 2024-11-14 342/week @ 2024-11-21 233/week @ 2024-11-28

1,261 downloads per month
Used in 16 crates (13 directly)

Apache-2.0

26KB
345 lines

Filebuffer

Fast and simple file reading for Rust.

Crates.io version Changelog Documentation

Filebuffer can map files into memory. This is often faster than using the primitives in std::io, and also more convenient. Furthermore this crate offers prefetching and checking whether file data is resident in physical memory (so access will not incur a page fault). This enables non-blocking file reading.

Example

Below is an implementation of the sha256sum program that is both faster and simpler than the naive std::io equivalent. (See sha256sum_filebuffer and sha256sum_naive in the examples directory.)

use std::env;
use crypto::digest::Digest;
use crypto::sha2::Sha256;
use filebuffer::FileBuffer;

extern crate crypto;
extern crate filebuffer;

fn main() {
    for fname in env::args().skip(1) {
        let fbuffer = FileBuffer::open(&fname).expect("failed to open file");
        let mut hasher = Sha256::new();
        hasher.input(&fbuffer);
        println!("{}  {}", hasher.result_str(), fname);
    }
}

License

Filebuffer is licensed under the Apache 2.0 license. It may be used in free software as well as closed-source applications, both for commercial and non-commercial use under the conditions given in the license. If you want to use Filebuffer in your GPLv2-licensed software, you can add an exception to your copyright notice.

Dependencies

~215KB