(
rng: &mut R,
data: &'a MultiStream,
)
| 134 | } |
| 135 | |
| 136 | pub fn select_random_non_empty_stream<'a, R>( |
| 137 | rng: &mut R, |
| 138 | data: &'a MultiStream, |
| 139 | ) -> Option<(StreamKey, &'a Vec<u8>)> |
| 140 | where |
| 141 | R: Rng, |
| 142 | { |
| 143 | let non_empty_streams = data.streams.iter().filter(|(_, data)| !data.bytes.is_empty()).count(); |
| 144 | if non_empty_streams == 0 { |
| 145 | return None; |
| 146 | } |
| 147 | let stream = rng.gen_range(0..non_empty_streams); |
| 148 | data.streams |
| 149 | .iter() |
| 150 | .filter(|(_, data)| !data.bytes.is_empty()) |
| 151 | .nth(stream) |
| 152 | .map(|(addr, data)| (*addr, &data.bytes)) |
| 153 | } |
| 154 | |
| 155 | pub fn load_json<T: serde::de::DeserializeOwned>(path: &std::path::Path) -> anyhow::Result<T> { |
| 156 | serde_json::from_slice( |
no test coverage detected