burn_dataset/transform/
composed.rs1use crate::Dataset;
2
3#[derive(new)]
5pub struct ComposedDataset<D> {
6 datasets: Vec<D>,
7}
8
9impl<D, I> Dataset<I> for ComposedDataset<D>
10where
11 D: Dataset<I>,
12 I: Clone,
13{
14 fn get(&self, index: usize) -> Option<I> {
15 let mut current_index = 0;
16 for dataset in self.datasets.iter() {
17 if index < dataset.len() + current_index {
18 return dataset.get(index - current_index);
19 }
20 current_index += dataset.len();
21 }
22 None
23 }
24 fn len(&self) -> usize {
25 let mut total = 0;
26 for dataset in self.datasets.iter() {
27 total += dataset.len();
28 }
29 total
30 }
31}