read_file/
read_file.rs

1/*
2 * Spare Buffer
3 * This is free and unencumbered software released into the public domain.
4 */
5use std::fs::File;
6use std::io::Read;
7use std::num::NonZeroUsize;
8
9use spare_buffer::SpareBuffer;
10
11fn main() {
12    let mut vec: Vec<u8> = Vec::with_capacity(1048576);
13    let mut buffer = SpareBuffer::from(&mut vec, NonZeroUsize::new(10485760));
14    
15    let chunk_size = NonZeroUsize::new(4096).unwrap();
16    let mut file = File::open("input.dat").expect("Failed to open input file!");
17
18    loop {
19        let spare = buffer.allocate_spare(chunk_size);
20        let count = file.read(spare).expect("File read error encountered!");
21        if count > 0 {
22            buffer.commit(count).expect("Failed to commit!");
23        } else {
24            break; /* EOF*/
25        }
26    }
27
28    println!("Length: {:?}", vec.len());
29}