blob: b484aa16efcad04ada44f0fff8a4d94fff7421c3 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
|
use crate::chunk::DataChunk;
use crate::chunkid::ChunkId;
use crate::chunkmeta::ChunkMeta;
// Generate a desired number of empty data chunks with id and metadata.
pub struct ChunkGenerator {
goal: u32,
next: u32,
}
impl ChunkGenerator {
pub fn new(goal: u32) -> Self {
Self { goal, next: 0 }
}
}
impl Iterator for ChunkGenerator {
type Item = (ChunkId, String, ChunkMeta, DataChunk);
fn next(&mut self) -> Option<Self::Item> {
if self.next >= self.goal {
None
} else {
let id = ChunkId::from_str(&format!("{}", self.next));
let checksum = id.sha256();
let meta = ChunkMeta::new(&checksum);
let chunk = DataChunk::new(vec![]);
self.next += 1;
Some((id, checksum, meta, chunk))
}
}
}
|