(path: &str, size: u64)
| 4 | use std::io::{Seek, SeekFrom, Write}; |
| 5 | |
| 6 | fn create_file(path: &str, size: u64) -> std::io::Result<File> { |
| 7 | let mut file = OpenOptions::new() |
| 8 | .read(true) |
| 9 | .write(true) |
| 10 | .create(true) |
| 11 | .truncate(true) |
| 12 | .open(path)?; |
| 13 | |
| 14 | let mut rng = rand::thread_rng(); |
| 15 | const BUFFER_SIZE: usize = 8192; // 8 KB buffer |
| 16 | let mut buffer = [0u8; BUFFER_SIZE]; |
| 17 | |
| 18 | let full_chunks = size / BUFFER_SIZE as u64; |
| 19 | let remainder = (size % BUFFER_SIZE as u64) as usize; |
| 20 | |
| 21 | for _ in 0..full_chunks { |
| 22 | // Use `rng.fill` for slices instead of arrays |
| 23 | rng.fill(&mut buffer[..]); |
| 24 | file.write_all(&buffer)?; |
| 25 | } |
| 26 | |
| 27 | if remainder > 0 { |
| 28 | // Use `rng.fill` for slices |
| 29 | rng.fill(&mut buffer[..remainder]); |
| 30 | file.write_all(&buffer[..remainder])?; |
| 31 | } |
| 32 | |
| 33 | file.seek(SeekFrom::Start(0))?; // Reset file pointer to the beginning |
| 34 | Ok(file) |
| 35 | } |
| 36 | |
| 37 | fn write_random_bytes( |
| 38 | file: &mut File, |
no test coverage detected