Skip to main content

torsh_data/dataset/
chaindataset_traits.rs

1//! # ChainDataset - Trait Implementations
2//!
3//! This module contains trait implementations for `ChainDataset`.
4//!
5//! ## Implemented Traits
6//!
7//! - `IterableDataset`
8//! - `Clone`
9//!
10//! 🤖 Generated with [SplitRS](https://github.com/cool-japan/splitrs)
11
12use super::functions::IterableDataset;
13use super::types::{ChainDataset, ChainDatasetIter};
14
15impl<D: IterableDataset + Clone> IterableDataset for ChainDataset<D> {
16    type Item = D::Item;
17    type Iter = ChainDatasetIter<D>;
18    fn iter(&self) -> Self::Iter {
19        let current_iter = if !self.datasets.is_empty() {
20            Some(self.datasets[0].iter())
21        } else {
22            None
23        };
24        ChainDatasetIter {
25            datasets: self.datasets.clone(),
26            current_index: 0,
27            current_iter,
28        }
29    }
30}
31
32impl<D: IterableDataset + Clone> Clone for ChainDataset<D> {
33    fn clone(&self) -> Self {
34        Self {
35            datasets: self.datasets.clone(),
36        }
37    }
38}