re_types 0.12.1

The built-in Rerun data types, component types, and archetypes.
Documentation
#[allow(dead_code)]
pub fn assert_extensions(array: &dyn ::arrow2::array::Array, expected: &[&str]) {
    let mut extracted = vec![];
    extract_extensions(array.data_type(), &mut extracted);
    similar_asserts::assert_eq!(expected, extracted);
}

#[allow(dead_code)]
pub fn extract_extensions(datatype: &::arrow2::datatypes::DataType, acc: &mut Vec<String>) {
    match datatype {
        arrow2::datatypes::DataType::List(field)
        | arrow2::datatypes::DataType::FixedSizeList(field, _)
        | arrow2::datatypes::DataType::LargeList(field) => {
            extract_extensions(field.data_type(), acc);
        }
        arrow2::datatypes::DataType::Struct(fields) => {
            for field in fields {
                extract_extensions(field.data_type(), acc);
            }
        }
        arrow2::datatypes::DataType::Extension(fqname, inner, _) => {
            acc.push(fqname.clone());
            extract_extensions(inner, acc);
        }
        _ => {}
    }
}