alamb opened a new issue, #8474:
URL: https://github.com/apache/arrow-rs/issues/8474

   **Is your feature request related to a problem or challenge? Please describe 
what you are trying to do.**
   
   As @mbrobbel  pointed out in 
https://github.com/apache/arrow-rs/pull/8408/files#r2378240955:
   
   There are currently two APIs for seeing if a Field has an extension type:
   
   * 
[`Field::extension_type`](https://docs.rs/arrow/latest/arrow/datatypes/struct.Field.html#method.extension_type)
 that panics if the field does not have the extension type
   * 
[`Field::try_extension_type`](https://docs.rs/arrow/latest/arrow/datatypes/struct.Field.html#method.try_extension_type)
 that returns an `ArrowError` if the field does not have the extension type
   
   There is no good API to quickly tell if a Field has an extension type. The 
current way is like
   ```rust
   if field.try_extension_type<TheExtensionType>().is_ok() {
    // field has extension type
   }
   ```
   
   Works, but it requires creating an `ArrowError` if the field is not the 
requested type, which is slow as it allocates a String
   
   in https://github.com/apache/arrow-rs/pull/8408 I came up with this to avoid 
the problem, but it is not obvious and somewhat redundant:
   
   ```rust
       // Check the name (= quick and cheap) and only try_extension_type if the 
name matches
       // to avoid unnecessary String allocations in ArrowError
       if field.extension_type_name()? != VariantType::NAME {
           return None;
       }
       match field.try_extension_type::<VariantType>() {
           Ok(VariantType) => Some(LogicalType::Variant),
           // Given check above, this should not error, but if it does ignore
           Err(_e) => None,
       }
   ```
   
   **Describe the solution you'd like**
   A clearer way to test for extension types.
   
   Maybe the documentation I added in 
https://github.com/apache/arrow-rs/pull/8408 is sufficient
   
   **Describe alternatives you've considered**
   <!--
   A clear and concise description of any alternative solutions or features 
you've considered.
   -->
   
   **Additional context**
   <!--
   Add any other context or screenshots about the feature request here.
   -->
   


-- 
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]

Reply via email to