1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39
use crate::RemovableValue; use crate::UrlData; use crate::UrlDataBuilder; use crate::UrlDataInlineDataset; use csv::Reader; #[cfg(feature = "csv")] impl<R> From<Reader<R>> for UrlData where R: std::io::Read, { fn from(mut v: Reader<R>) -> Self { UrlDataBuilder::default() .values(UrlDataInlineDataset::UnionArray( v.records() .map(|it: Result<csv::StringRecord, _>| { serde_json::Value::Array( it.expect("TODO manage error in csv") .iter() .map(|f: &str| serde_json::Value::String(f.to_string())) .collect::<Vec<_>>(), ) }) .collect::<Vec<_>>(), )) .build() .unwrap() } } #[cfg(feature = "csv")] impl<R> From<Reader<R>> for RemovableValue<UrlData> where R: std::io::Read, { fn from(v: Reader<R>) -> Self { RemovableValue::Specified(v.into()) } }