Is your feature request related to a problem or challenge? Please describe what you are trying to do.
in #3920 and #3917 support was added to to create buffers from standard Rust vectors. The currently instable allocator_api feature extends Vec to support custom allocators, using functions such as new_in. In our product we are using such custom allocators to track the memory usage of individual queries. I'd like to add a similarly named feature to arrow-rs which would generalize the Buffer::from_vec and MutableBuffer::from_vec functions.
Describe the solution you'd like
- Add a feature named
allocator-api to arrow-buffer
- If that feature is active, a different impl of
from_vec would be enabled (via cfg attribute), which has a generic parameter for the allocator
Deallocation::Standard would additionally store the allocator (note the default Global allocator is zero-sized)
- The feature would require a nightly rust compiler, just as the feature of the standard library
Describe alternatives you've considered
Something similar can be achieved using Buffer::from_custom_allocation but requires unsafe and dealing with pointers.
Additional context
Is your feature request related to a problem or challenge? Please describe what you are trying to do.
in #3920 and #3917 support was added to to create buffers from standard Rust vectors. The currently instable
allocator_apifeature extendsVecto support custom allocators, using functions such asnew_in. In our product we are using such custom allocators to track the memory usage of individual queries. I'd like to add a similarly named feature to arrow-rs which would generalize theBuffer::from_vecandMutableBuffer::from_vecfunctions.Describe the solution you'd like
allocator-apitoarrow-bufferfrom_vecwould be enabled (via cfg attribute), which has a generic parameter for the allocatorDeallocation::Standardwould additionally store the allocator (note the defaultGlobalallocator is zero-sized)Describe alternatives you've considered
Something similar can be achieved using
Buffer::from_custom_allocationbut requires unsafe and dealing with pointers.Additional context