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