fill_buffer/
fill_buffer.rs

1/*
2 * Spare Buffer
3 * This is free and unencumbered software released into the public domain.
4 */
5use std::num::NonZeroUsize;
6
7use spare_buffer::SpareBuffer;
8
9fn main() {
10    let mut vec: Vec<u8> = Vec::with_capacity(128);
11    let mut buffer = SpareBuffer::from(&mut vec, None);
12    
13    let spare = buffer.allocate_spare(NonZeroUsize::new(100).unwrap());
14    for i in 0..50 {
15        spare[i] = i as u8;
16    }
17
18    // Whoops: only &spare[0..50] was initialized, but 100 elements are committed!
19    buffer.commit(100).expect("Failed to commit!");
20
21    println!("Expect valid numbers:");
22    println!("{:?}\n", &vec[..50]);
23
24    println!("Expect \"unspecified\" garbage:");
25    println!("{:?}\n", &vec[50..]);
26}