rsv_lib/utils/
excel.rs

1use calamine::Data;
2use std::{borrow::Cow, fmt::Write};
3
4// pub fn datatype_vec_to_string_vec(data: &[DataType]) -> Vec<String> {
5//     data.iter().map(|i| i.to_string()).collect()
6// }
7
8pub fn datatype_vec_to_string_vec(data: &[Data]) -> Vec<Cow<str>> {
9    data.iter()
10        .map(|i| match i {
11            Data::String(s) => Cow::Borrowed(s.as_str()),
12            _ => Cow::from(i.to_string()),
13        })
14        .collect()
15}
16
17pub fn datatype_vec_to_string(data: &[Data]) -> String {
18    let mut o = String::new();
19    let mut iter = data.iter().peekable();
20    while let Some(i) = iter.next() {
21        write_datatype_to_string(&mut o, i);
22        if iter.peek().is_some() {
23            o.push(',');
24        }
25    }
26    o
27}
28
29pub fn write_datatype_to_string(s: &mut String, d: &Data) {
30    let _ = match d {
31        Data::String(v) => write!(s, "{}", v),
32        Data::Float(v) => write!(s, "{}", v),
33        Data::Int(v) => write!(s, "{}", v),
34        Data::Bool(v) => write!(s, "{}", v),
35        Data::DateTime(v) => write!(s, "{}", v),
36        Data::DateTimeIso(v) => write!(s, "{}", v),
37        Data::DurationIso(v) => write!(s, "{}", v),
38        Data::Error(v) => write!(s, "{}", v),
39        Data::Empty => Ok(()),
40    };
41}