Skip to content
This repository was archived by the owner on Dec 29, 2021. It is now read-only.

Commit a83aa0b

Browse files
committed
add utils for fns that we can reuse at various places
1 parent ed6823f commit a83aa0b

File tree

3 files changed

+37
-28
lines changed

3 files changed

+37
-28
lines changed

src/dataframe.rs

Lines changed: 2 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
use crate::table::Column;
2+
use crate::utils;
23
use arrow::array;
34
use arrow::array::{Array, ArrayRef};
45
use arrow::array_data::ArrayDataBuilder;
@@ -13,28 +14,6 @@ use std::sync::Arc;
1314

1415
use crate::error::DataFrameError;
1516

16-
fn make_array(data: ArrayDataRef) -> ArrayRef {
17-
// TODO: here data_type() needs to clone the type - maybe add a type tag enum to
18-
// avoid the cloning.
19-
match data.data_type().clone() {
20-
DataType::Boolean => Arc::new(array::BooleanArray::from(data)) as ArrayRef,
21-
DataType::Int8 => Arc::new(array::Int8Array::from(data)) as ArrayRef,
22-
DataType::Int16 => Arc::new(array::Int16Array::from(data)) as ArrayRef,
23-
DataType::Int32 => Arc::new(array::Int32Array::from(data)) as ArrayRef,
24-
DataType::Int64 => Arc::new(array::Int64Array::from(data)) as ArrayRef,
25-
DataType::UInt8 => Arc::new(array::UInt8Array::from(data)) as ArrayRef,
26-
DataType::UInt16 => Arc::new(array::UInt16Array::from(data)) as ArrayRef,
27-
DataType::UInt32 => Arc::new(array::UInt32Array::from(data)) as ArrayRef,
28-
DataType::UInt64 => Arc::new(array::UInt64Array::from(data)) as ArrayRef,
29-
DataType::Float32 => Arc::new(array::Float32Array::from(data)) as ArrayRef,
30-
DataType::Float64 => Arc::new(array::Float64Array::from(data)) as ArrayRef,
31-
DataType::Utf8 => Arc::new(array::BinaryArray::from(data)) as ArrayRef,
32-
DataType::List(_) => Arc::new(array::ListArray::from(data)) as ArrayRef,
33-
DataType::Struct(_) => Arc::new(array::StructArray::from(data)) as ArrayRef,
34-
dt => panic!("Unexpected data type {:?}", dt),
35-
}
36-
}
37-
3817
//impl From<&ArrayRef> for &PrimitiveArray<BooleanType> {
3918
// fn from(array: &ArrayRef) -> Self {
4019
// array.as_any().downcast_ref::<BooleanArray>().unwrap()
@@ -219,7 +198,7 @@ impl DataFrame {
219198
// )
220199
// .build()
221200
// })
222-
// .map(|col| make_array(col))
201+
// .map(|col| utils::make_array(col))
223202
// .collect(),
224203
// )
225204
// }

src/lib.rs

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -4,8 +4,9 @@
44
#![allow(dead_code)]
55
#![feature(test)]
66

7-
mod dataframe;
8-
mod error;
9-
mod functions;
10-
mod io;
11-
mod table;
7+
pub mod dataframe;
8+
pub mod error;
9+
pub mod functions;
10+
pub mod io;
11+
pub mod table;
12+
pub mod utils;

src/utils.rs

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
use crate::table::Column;
2+
use arrow::array;
3+
use arrow::array::{Array, ArrayRef};
4+
// use arrow::array_data::ArrayDataBuilder;
5+
use arrow::array_data::ArrayDataRef;
6+
use arrow::datatypes::*;
7+
use std::sync::Arc;
8+
9+
pub fn make_array(data: ArrayDataRef) -> ArrayRef {
10+
// TODO: here data_type() needs to clone the type - maybe add a type tag enum to
11+
// avoid the cloning.
12+
match data.data_type().clone() {
13+
DataType::Boolean => Arc::new(array::BooleanArray::from(data)) as ArrayRef,
14+
DataType::Int8 => Arc::new(array::Int8Array::from(data)) as ArrayRef,
15+
DataType::Int16 => Arc::new(array::Int16Array::from(data)) as ArrayRef,
16+
DataType::Int32 => Arc::new(array::Int32Array::from(data)) as ArrayRef,
17+
DataType::Int64 => Arc::new(array::Int64Array::from(data)) as ArrayRef,
18+
DataType::UInt8 => Arc::new(array::UInt8Array::from(data)) as ArrayRef,
19+
DataType::UInt16 => Arc::new(array::UInt16Array::from(data)) as ArrayRef,
20+
DataType::UInt32 => Arc::new(array::UInt32Array::from(data)) as ArrayRef,
21+
DataType::UInt64 => Arc::new(array::UInt64Array::from(data)) as ArrayRef,
22+
DataType::Float32 => Arc::new(array::Float32Array::from(data)) as ArrayRef,
23+
DataType::Float64 => Arc::new(array::Float64Array::from(data)) as ArrayRef,
24+
DataType::Utf8 => Arc::new(array::BinaryArray::from(data)) as ArrayRef,
25+
DataType::List(_) => Arc::new(array::ListArray::from(data)) as ArrayRef,
26+
DataType::Struct(_) => Arc::new(array::StructArray::from(data)) as ArrayRef,
27+
dt => panic!("Unexpected data type {:?}", dt),
28+
}
29+
}

0 commit comments

Comments
 (0)