Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
pola-rs
GitHub Repository: pola-rs/polars
Path: blob/main/crates/polars-ffi/src/lib.rs
6939 views
1
#![allow(unsafe_op_in_unsafe_fn)]
2
pub mod version_0;
3
4
use std::mem::ManuallyDrop;
5
6
use arrow::array::ArrayRef;
7
use arrow::ffi;
8
use arrow::ffi::{ArrowArray, ArrowSchema};
9
use polars_core::error::PolarsResult;
10
use polars_core::prelude::Series;
11
12
pub const MAJOR: u16 = 0;
13
pub const MINOR: u16 = 1;
14
15
pub const fn get_version() -> (u16, u16) {
16
(MAJOR, MINOR)
17
}
18
19
// A utility that helps releasing/owning memory.
20
#[allow(dead_code)]
21
struct PrivateData {
22
schema: Box<ArrowSchema>,
23
arrays: Box<[*mut ArrowArray]>,
24
}
25
26
/// # Safety
27
/// `ArrowArray` and `ArrowSchema` must be valid
28
unsafe fn import_array(
29
array: ffi::ArrowArray,
30
schema: &ffi::ArrowSchema,
31
) -> PolarsResult<ArrayRef> {
32
let field = ffi::import_field_from_c(schema)?;
33
let out = ffi::import_array_from_c(array, field.dtype)?;
34
Ok(out)
35
}
36
37