progress_random_write/
progress_random_write.rs

1// SPDX-License-Identifier: MIT
2// Copyright ${YEAR} IROX Contributors
3//
4
5use std::fs::OpenOptions;
6use std::io::{BufWriter, Error};
7
8use irox_bits::MutBits;
9use irox_progress::console::ConsoleProgressPrinter;
10use irox_progress::write::WriterTask;
11use irox_progress::{ProgressPrinter, Task};
12use irox_time::Duration;
13use irox_tools::random::{Random, PRNG};
14
15pub fn main() -> Result<(), Error> {
16    let mut rand = Random::default();
17
18    let cons = ConsoleProgressPrinter::new_update_rate(Duration::from_millis(100));
19    let task = Task::new_infinite_named("Writer".to_string());
20    cons.track_task_progress(&task);
21    task.mark_started();
22
23    let out = OpenOptions::new()
24        .write(true)
25        .truncate(true)
26        .create(true)
27        .open("test")?;
28    let out = BufWriter::new(out);
29    let mut out = WriterTask::new(out, task);
30
31    let gb = 1_000_000_000 / 8;
32    for _i in 0..gb {
33        out.write_be_u64(rand.next_u64())?;
34    }
35
36    Ok(())
37}