use burn_tensor::backend::Backend;
pub use crate::data::dataset::{Dataset, DatasetIterator};
use core::iter::Iterator;
use std::sync::Arc;
#[derive(new, Clone, Debug)]
pub struct Progress {
pub items_processed: usize,
pub items_total: usize,
}
pub trait DataLoaderIterator<O>: Iterator<Item = O> {
fn progress(&self) -> Progress;
}
pub trait DataLoader<B: Backend, O>: Send + Sync {
fn iter<'a>(&'a self) -> Box<dyn DataLoaderIterator<O> + 'a>;
fn num_items(&self) -> usize;
fn to_device(&self, device: &B::Device) -> Arc<dyn DataLoader<B, O>>;
fn slice(&self, start: usize, end: usize) -> Arc<dyn DataLoader<B, O>>;
}