Skip to main content

FFI_ArrowArrayStream

Struct FFI_ArrowArrayStream 

Source
#[repr(C)]
pub struct FFI_ArrowArrayStream { get_schema: Option<unsafe extern "C" fn(arg1: *mut Self, out: *mut FFI_ArrowSchema) -> c_int>, get_next: Option<unsafe extern "C" fn(arg1: *mut Self, out: *mut FFI_ArrowArray) -> c_int>, get_last_error: Option<unsafe extern "C" fn(arg1: *mut Self) -> *const c_char>, release: Option<unsafe extern "C" fn(arg1: *mut Self)>, private_data: *mut c_void, }
Expand description

ABI-compatible struct for ArrayStream from C Stream Interface See https://arrow.apache.org/docs/format/CStreamInterface.html#structure-definitions This was created by bindgen

Fields§

§get_schema: Option<unsafe extern "C" fn(arg1: *mut Self, out: *mut FFI_ArrowSchema) -> c_int>

C function to get schema from the stream

§get_next: Option<unsafe extern "C" fn(arg1: *mut Self, out: *mut FFI_ArrowArray) -> c_int>

C function to get next array from the stream

§get_last_error: Option<unsafe extern "C" fn(arg1: *mut Self) -> *const c_char>

C function to get the error from last operation on the stream

§release: Option<unsafe extern "C" fn(arg1: *mut Self)>

C function to release the stream

§private_data: *mut c_void

Private data used by the stream, owned by the release callback.

Implementations§

Source§

impl FFI_ArrowArrayStream

Source

pub fn new(batch_reader: Box<dyn RecordBatchReader + Send>) -> Self

Creates a new FFI_ArrowArrayStream.

Source

pub unsafe fn new_unchecked( get_schema: Option<unsafe extern "C" fn(arg1: *mut Self, out: *mut FFI_ArrowSchema) -> c_int>, get_next: Option<unsafe extern "C" fn(arg1: *mut Self, out: *mut FFI_ArrowArray) -> c_int>, get_last_error: Option<unsafe extern "C" fn(arg1: *mut Self) -> *const c_char>, release: Option<unsafe extern "C" fn(arg1: *mut Self)>, private_data: *mut c_void, ) -> Self

Creates a new FFI_ArrowArrayStream from its raw parts.

§Safety

The caller takes responsibility for the C stream interface contract:

  • Each callback that is Some must be sound to invoke with a pointer to this struct, and must implement the semantics the C stream interface specifies for it.
  • private_data must own everything the callbacks rely on, and must remain valid until release is called.
  • release, if Some, is invoked by Drop with a pointer to this struct. It must free private_data exactly once and then set the release callback to None to mark the stream released.
  • If release is None the stream is already released, so dropping it must not leak: nothing may be left for the callback to free.
Source

pub unsafe fn from_raw(raw_stream: *mut FFI_ArrowArrayStream) -> Self

Takes ownership of the pointed to FFI_ArrowArrayStream

This acts to move the data out of raw_stream, setting the release callback to NULL

§Safety
  • raw_stream must be valid for reads and writes
  • raw_stream must be properly aligned
  • raw_stream must point to a properly initialized value of FFI_ArrowArrayStream
Source

pub fn empty() -> Self

Creates a new empty FFI_ArrowArrayStream. Used to import from the C Stream Interface.

Source

pub fn get_schema( &self, ) -> Option<unsafe extern "C" fn(arg1: *mut Self, out: *mut FFI_ArrowSchema) -> c_int>

Returns the producer-provided callback that writes this stream’s schema, if any.

§Safety

The callback must be invoked with a pointer to the stream it was read from.

Source

pub fn get_next( &self, ) -> Option<unsafe extern "C" fn(arg1: *mut Self, out: *mut FFI_ArrowArray) -> c_int>

Returns the producer-provided callback that yields the next array, if any.

§Safety

The callback must be invoked with a pointer to the stream it was read from.

Source

pub fn get_last_error( &self, ) -> Option<unsafe extern "C" fn(arg1: *mut Self) -> *const c_char>

Returns the producer-provided callback that describes the last error, if any.

§Safety

The callback must be invoked with a pointer to the stream it was read from. The string it returns is owned by the producer and valid only until the next call on the stream.

Source

pub fn release(&self) -> Option<unsafe extern "C" fn(arg1: *mut Self)>

Returns the producer-provided release callback, if any.

Source

pub fn private_data(&self) -> *mut c_void

Returns the opaque producer-provided private data pointer.

Source

pub unsafe fn set_release( &mut self, release: Option<unsafe extern "C" fn(arg1: *mut Self)>, ) -> Option<unsafe extern "C" fn(arg1: *mut Self)>

Replaces the release callback, returning the previous one.

Lets a consumer wrap release: save the old callback, install its own, and chain back on drop. See https://github.com/apache/arrow-rs/issues/9771.

§Safety

Drop calls this callback with a pointer to self. The new callback must correctly release this stream (usually by chaining to the returned one) and must match the FFI_ArrowArrayStream::private_data it reads. A wrong callback is undefined behavior on drop.

Source

pub unsafe fn set_private_data( &mut self, private_data: *mut c_void, ) -> *mut c_void

Replaces the private data pointer, returning the previous one.

§Safety

The old pointer is returned without being freed; the caller owns it from here. The new pointer must match what the current FFI_ArrowArrayStream::release callback expects.

Trait Implementations§

Source§

impl Debug for FFI_ArrowArrayStream

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl Drop for FFI_ArrowArrayStream

Source§

fn drop(&mut self)

Executes the destructor for this type. Read more
Source§

fn pin_drop(self: Pin<&mut Self>)

🔬This is a nightly-only experimental API. (pin_ergonomics)
Execute the destructor for this type, but different to Drop::drop, it requires self to be pinned. Read more
Source§

impl Send for FFI_ArrowArrayStream

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
§

impl<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
where ST: ?Sized, DT: ?Sized,

§

impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
where ST: ?Sized, DT: ?Sized,

Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

§

impl<T> Read<Exclusive, BecauseExclusive> for T
where T: ?Sized,

Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = !

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, !>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.