tustvold commented on code in PR #9295:
URL: https://github.com/apache/arrow-rs/pull/9295#discussion_r2747765217
##########
arrow-array/src/array/mod.rs:
##########
@@ -350,12 +413,19 @@ pub unsafe trait Array: std::fmt::Debug + Send + Sync {
/// A reference-counted reference to a generic `Array`
pub type ArrayRef = Arc<dyn Array>;
-/// Ergonomics: Allow use of an ArrayRef as an `&dyn Array`
+/// Ergonomics: Allow use of an ArrayRef as an `&dyn Array`.
+/// Use [`Array::as_array_ref_opt()`] to recover the original [`ArrayRef`] and
+/// [`downcast_array_ref()`] to downcast to an Arc of some concrete array type.
unsafe impl Array for ArrayRef {
fn as_any(&self) -> &dyn Any {
self.as_ref().as_any()
}
+ fn as_array_ref_opt(&self) -> Option<ArrayRef> {
+ // Recursively unwrap nested Arcs to find the deepest one
+ Some(innermost_array_ref(Cow::Borrowed(self)))
Review Comment:
I agree it is possible, but why on earth would you do such a thing? Tbh I'm
not sure why Array is implemented for `Arc<dyn Array>`...
--
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: [email protected]
For queries about this service, please contact Infrastructure at:
[email protected]