burn_dataset/transform/
composed.rs

1use crate::Dataset;
2
3/// Compose multiple datasets together to create a bigger one.
4#[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}