1use libafl_bolts::rands::Rand;
5
6pub trait RandExt: Rand {
8 fn generate_bytes(&mut self, len: usize) -> Vec<u8> {
10 let mut data = vec![0u8; len];
11 self.fill_bytes(&mut data);
12 data
13 }
14
15 fn fill_bytes(&mut self, dest: &mut [u8]) {
17 let mut chunks = dest.chunks_exact_mut(8);
18 for chunk in chunks.by_ref() {
19 let r = self.next();
20 chunk.copy_from_slice(&r.to_le_bytes());
21 }
22 let remainder = chunks.into_remainder();
23 if !remainder.is_empty() {
24 let r = self.next();
25 remainder.copy_from_slice(&r.to_le_bytes()[..remainder.len()]);
26 }
27 }
28}
29
30impl<T: Rand + ?Sized> RandExt for T {}