bjchambers commented on a change in pull request #809: URL: https://github.com/apache/arrow-rs/pull/809#discussion_r717025366
########## File path: arrow/src/buffer/mod.rs ########## @@ -23,7 +23,7 @@ pub use immutable::*; mod mutable; pub use mutable::*; mod ops; -pub(super) use ops::*; +pub use ops::*; Review comment: I generally agree with exposing them, but I think `pub(crate)` only works if I (as a user) am adding code to the crate. The specific problem: 1. I want to write a kernel (let's use a `nullif` over arbitrary `dyn Array` as an example, but it can apply to arbitrary other kernels). Note, while a specific kernel may be worth adding to arrow, at some point it seems like we need to support these kernels being written outside of Arrow. 2. I can use `bit_slice` to slice null bits, but it doesn't update the length, so using the implemented `a & b` (`BitAnd`) trait won't work, because the lengths aren't equal. 3. I could just call `buffer_bin_and` and it would work, but I can't do that without being inside the arrow crate. So it seems like there is a bigger discussion here of what is necessary to make it feasible for the user to write kernels operating on buffers. The reason I want to make it public, is that it is the minimum change (since the generic implementation of nullif is tied up in discussion) that enables writing that within my project, given the problems with the Buffer interface. -- This is an automated message from the Apache Git Service. To respond to the message, please log on to GitHub and use the URL above to go to the specific comment. To unsubscribe, e-mail: github-unsubscr...@arrow.apache.org For queries about this service, please contact Infrastructure at: us...@infra.apache.org