1use calamine::Data;
2use std::{borrow::Cow, fmt::Write};
3
4pub 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}