1use nu_protocol::Value;
2use std::collections::HashSet;
3
4pub fn get_columns(input: &[Value]) -> Vec<String> {
5 let mut columns = vec![];
6 for item in input {
7 let Value::Record { val, .. } = item else {
8 return vec![];
9 };
10
11 for col in val.columns() {
12 if !columns.contains(col) {
13 columns.push(col.to_string());
14 }
15 }
16 }
17
18 columns
19}
20
21pub fn nonexistent_column<'a, I>(inputs: &[String], columns: I) -> Option<String>
23where
24 I: IntoIterator<Item = &'a String>,
25{
26 let set: HashSet<&String> = HashSet::from_iter(columns);
27
28 for input in inputs {
29 if set.contains(input) {
30 continue;
31 }
32 return Some(input.clone());
33 }
34 None
35}