filebuffer

Crates.iofilebuffer
lib.rsfilebuffer
version1.0.0
sourcesrc
created_at2016-01-31 12:03:13.589568
updated_at2024-05-18 14:21:22.28222
descriptionFast and simple file reading
homepage
repositoryhttps://github.com/ruuda/filebuffer
max_upload_size
id4032
size47,100
Ruud van Asseldonk (ruuda)

documentation

https://docs.rs/filebuffer

README

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.

Commit count: 110

cargo fmt