1 | /// [`Records`] extension which guarantees the amount of rows. |
2 | /// |
3 | /// [`Records`]: crate::records::Records |
4 | pub trait ExactRecords { |
5 | /// Returns an exact amount of rows in records. |
6 | /// |
7 | /// It must be guaranteed that an iterator will yield this amount. |
8 | fn count_rows(&self) -> usize; |
9 | } |
10 | |
11 | impl<T> ExactRecords for &T |
12 | where |
13 | T: ExactRecords, |
14 | { |
15 | fn count_rows(&self) -> usize { |
16 | T::count_rows(self) |
17 | } |
18 | } |
19 | |
20 | #[cfg (feature = "std" )] |
21 | impl<T> ExactRecords for Vec<T> { |
22 | fn count_rows(&self) -> usize { |
23 | self.len() |
24 | } |
25 | } |
26 | |
27 | impl<T> ExactRecords for [T] { |
28 | fn count_rows(&self) -> usize { |
29 | self.len() |
30 | } |
31 | } |
32 | |