| 971 | enum CandidateSeed<'a> { |
| 972 | One(u64), |
| 973 | Many(&'a [u64]), |
| 974 | } |
| 975 | |
| 976 | fn compare_bool(equal: bool, op: CsvCompare) -> bool { |
| 977 | match op { |
| 978 | CsvCompare::Eq => equal, |
| 979 | CsvCompare::Ne => !equal, |
| 980 | _ => false, |
| 981 | } |
| 982 | } |
| 983 | |
| 984 | fn compare_ord(ord: std::cmp::Ordering, op: CsvCompare) -> bool { |
| 985 | match op { |
| 986 | CsvCompare::Eq => ord == std::cmp::Ordering::Equal, |
| 987 | CsvCompare::Ne => ord != std::cmp::Ordering::Equal, |
| 988 | CsvCompare::Lt => ord == std::cmp::Ordering::Less, |
| 989 | CsvCompare::Le => ord != std::cmp::Ordering::Greater, |
| 990 | CsvCompare::Gt => ord == std::cmp::Ordering::Greater, |
| 991 | CsvCompare::Ge => ord != std::cmp::Ordering::Less, |
| 992 | } |
| 993 | } |
| 994 | |
| 995 | #[derive(Clone, Debug)] |
| 996 | pub struct CSVQueryResult { |
| 997 | table: &'static Csv, |
| 998 | rows: Vec<usize>, |
| 999 | /// `None` = all columns (identity), avoids materializing `0..col_count`. |
| 1000 | select_cols: Option<Vec<usize>>, |
| 1001 | } |
| 1002 | |
| 1003 | impl CSVQueryResult { |
| 1004 | #[inline] |
| 1005 | pub fn len(&self) -> usize { |
| 1006 | self.rows.len() |
| 1007 | } |
| 1008 | |
| 1009 | #[inline] |
| 1010 | pub fn is_empty(&self) -> bool { |
| 1011 | self.rows.is_empty() |
| 1012 | } |