dataloader_rs/sampler/traits.rs
1//! The [`Sampler`] trait.
2
3/// Produces an ordered sequence of indices for one full pass over a dataset.
4pub trait Sampler: Send + 'static {
5 /// Return the index sequence for one epoch over a dataset of `dataset_len`
6 /// items.
7 fn indices(&mut self, dataset_len: usize) -> Vec<usize>;
8
9 /// Number of indices [`indices`](Self::indices) returns for a dataset of
10 /// `dataset_len` items, without advancing the sampler.
11 ///
12 /// Defaults to `dataset_len`; override it for samplers that subsample,
13 /// shard, or oversample.
14 fn len(&self, dataset_len: usize) -> usize {
15 dataset_len
16 }
17}