burn_dataset/dataset/
base.rs1use std::sync::Arc;
2
3use crate::DatasetIterator;
4
5pub trait Dataset<I>: Send + Sync {
7 fn get(&self, index: usize) -> Option<I>;
9
10 fn len(&self) -> usize;
12
13 fn is_empty(&self) -> bool {
15 self.len() == 0
16 }
17
18 fn iter(&self) -> DatasetIterator<'_, I>
20 where
21 Self: Sized,
22 {
23 DatasetIterator::new(self)
24 }
25}
26
27impl<D, I> Dataset<I> for Arc<D>
28where
29 D: Dataset<I>,
30{
31 fn get(&self, index: usize) -> Option<I> {
32 self.as_ref().get(index)
33 }
34
35 fn len(&self) -> usize {
36 self.as_ref().len()
37 }
38}
39
40impl<I> Dataset<I> for Arc<dyn Dataset<I>> {
41 fn get(&self, index: usize) -> Option<I> {
42 self.as_ref().get(index)
43 }
44
45 fn len(&self) -> usize {
46 self.as_ref().len()
47 }
48}
49
50impl<D, I> Dataset<I> for Box<D>
51where
52 D: Dataset<I>,
53{
54 fn get(&self, index: usize) -> Option<I> {
55 self.as_ref().get(index)
56 }
57
58 fn len(&self) -> usize {
59 self.as_ref().len()
60 }
61}
62
63impl<I> Dataset<I> for Box<dyn Dataset<I>> {
64 fn get(&self, index: usize) -> Option<I> {
65 self.as_ref().get(index)
66 }
67
68 fn len(&self) -> usize {
69 self.as_ref().len()
70 }
71}