callback used to drop [FFI_ArrowArrayStream] when it is exported.
(stream: *mut FFI_ArrowArrayStream)
| 103 | |
| 104 | // callback used to drop [FFI_ArrowArrayStream] when it is exported. |
| 105 | unsafe extern "C" fn release_stream(stream: *mut FFI_ArrowArrayStream) { |
| 106 | if stream.is_null() { |
| 107 | return; |
| 108 | } |
| 109 | let stream = unsafe { &mut *stream }; |
| 110 | |
| 111 | stream.get_schema = None; |
| 112 | stream.get_next = None; |
| 113 | stream.get_last_error = None; |
| 114 | |
| 115 | let private_data = unsafe { Box::from_raw(stream.private_data as *mut StreamPrivateData) }; |
| 116 | drop(private_data); |
| 117 | |
| 118 | stream.release = None; |
| 119 | } |
| 120 | |
| 121 | struct StreamPrivateData { |
| 122 | batch_reader: Box<dyn RecordBatchReader + Send>, |