progress_random_write/
progress_random_write.rs1use 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}