1mod array;
4mod bridge;
5mod generated;
6pub mod mmap;
7mod schema;
8mod stream;
9
10pub(crate) use array::{try_from, ArrowArrayRef, InternalArrowArray};
11pub(crate) use bridge::align_to_c_data_interface;
12pub use generated::{ArrowArray, ArrowArrayStream, ArrowSchema};
13use polars_error::PolarsResult;
14pub use stream::{export_iterator, ArrowArrayStreamReader};
15
16use self::schema::to_field;
17use crate::array::Array;
18use crate::datatypes::{ArrowDataType, Field};
19
20pub fn export_array_to_c(array: Box<dyn Array>) -> ArrowArray {
22 ArrowArray::new(bridge::align_to_c_data_interface(array))
23}
24
25pub fn export_field_to_c(field: &Field) -> ArrowSchema {
27 ArrowSchema::new(field)
28}
29
30pub unsafe fn import_field_from_c(field: &ArrowSchema) -> PolarsResult<Field> {
35 to_field(field)
36}
37
38pub unsafe fn import_array_from_c(
43 array: ArrowArray,
44 dtype: ArrowDataType,
45) -> PolarsResult<Box<dyn Array>> {
46 try_from(InternalArrowArray::new(array, dtype))
47}