Skip to main content

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}